本页面的“代码demo索引”:
我个人感觉,C语言习惯先写主函数,再写自定义函数;而Python语言习惯先写自定义函数,再写主程序进行调用。(嗯,对了,顺便说一句,我学C语言,是2017年10月10日~2017年12月27日的事情,大一第一学期,年份没有错!)
【编程常识】一个完整的函数只用来解决一个单一的问题。
3.1.1 教学目标
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数是程序中一个重要的部分,在系统中已经定义了一些函数,例如计算平方根的函数(sqrt),程序中自己也可以定义函数,我们的任务就是来学习函数的定义方法(例如定义函数找出两个数的最小公倍数与最大公约数)。
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数1,参数2…):#参数列表中的参数是“形式参数”用英文逗号分隔
函数体#需要保持缩进
在调用函数时,形式参数规定了函数需要的数据个数,实际参数必须在数目上与形式参数一样,一般规则是:
函数的返回值是指函数被调用之后,在执行完函数体中的代码块后,返回给主调函数的值。通常情况下,调用函数后,都有返回值的,通过函数内部的“return”表达式来实现返回值。
一般格式如下:#这种没有标注程序用途的实例,是配合教程相关知识点而写的,全部都不会添加到索引中。
返回值:return表达式
def max(a,b):
c=a
if b>a:
c=b
return c
举个例子,求平方的函数:
def fun():
print(x)
if x<0:
return#执行完“return”语句,就返回“主调函数”
print(x*x)
x=-2#小于零,直接退出函数
fun()
x=1024#会先打印原数值
fun()#然后显示平方
【例题】质数判断函数:#这个demo是专门用来讲解自定义函数的示例,不添加到索引中
def ISPrime(m):
print("Link Start!")
for i in range(2,m):
#print(i)#本来,在老师的板书上有这行代码的,但是在运行过程中,如果输入了一个“比较大的数字”的话……emmmmmm.....别去试!.
if m%i == 0:
return False#存在1和自身之外的正整数,就返回“否定的结果”(不是质数)
print("OK")
return True#质数就返回肯定的结果
n = int(input("number:\n"))
print("Return:",ISPrime(n))
没有返回值的函数
函数也可以没有返回值,这时Python默认值是None。#无返回值函数,返回值为空
def SayHello()
print( "Hello,everyone!" )
不使用返回值的情况,往往是要用模块,便于调用,也可以使用“return”语句,但是后面就不跟任何表达式。没有返回值,也可以使用return语句,返回值为传入的参数本身。
函数调用是比较简单的,调用自己编写的函数就像调用Python语言的“内置函数”一样。有返回值的函数可以放在合适的任何一个表达式中去计算,当然也可以单独作为一条语句执行。而没有返回值的函数不能用在任何一个表达式中去参加计算,只能作为单独的一条语句执行。
但Python语言中规定,函数必须先定义才可以调用,即——在调用函数时编译器必须已经事先知道该函数的参数构造,不然编译会出错误。(理论上来说,自定义函数作为一个有完整功能的代码块,定义在程序中的任何位置都可以,只是说Python语言习惯将自定义函数写在主程序之前)
【例题】两个数的最大值函数_原理
def max(a, b) :
c=a#先赋值
if b>a:#再判断
c=b
return c
#调用这个自定义函数
m=max(2, 4)#也可以在运行过程中手动输入,但是这里只是说原理
print(m)
解题思路:设这3个整数是a、b、c,要找它们中的最大值,只要先找到a与b的最大值,设为d,再把这个最大值d与c比较,找到d与c的最大值,设为e,既找到了a、 b、c中的最大值。
完整代码如下:
def max2(a,b):#实际参数
c=a#赋值
if b>a:
c=b
return c
‘‘‘
max3(x,y):#形式参数(局部变量)
(这个函数的函数体内没有任何内容,不知道老师在这里放一个空白函数是什么目的?)
‘‘‘
a = float(input("a:"))
b = float(input("b:"))
c = float(input("c:"))
d = max2(a,b)
e = max2(d,c)#两次调用上一个函数
print("max is:",e)#打印(三个数当中的)最大值
以上程序可以直接粘贴到开发环境中,保存、运行。但是HTML没有“水平制表符”,因此使用空格缩进
在运行时,是将变量a传给x,把变量b传给y,“形式参数”与“实际参数”的个数是相同的,因为它们在内存中,都有自己的存储空间,当调用指定函数时,实际参数就会把值“传”(复制)给形式参数。
第9堂课,内容为初识Python函数。
本页面(?p=9)的实际上课时间为2020年4月28日第1小节课。
原文:https://www.cnblogs.com/Robot-DX3906/p/12964530.html