- def functionName(list of parameters):
- #函数定义时并不会执行,调用时才执行
- functionBody
- return value
-
有参数有返回值
有参数无返回值
无参数有返回值
无参数无返回值
注意事项:
1.函数形参不需要声明类型,也不需要指定函数返回值类型
2.即使函数不需要接受任何参数,也需要保留一对空的圆括号
3.括号后面的冒号必不可少
4.函数体相对于def关键字必须保持一定的空格缩进
5.python允许嵌套函数
基础语法
1.在python中,定义函数时不需要声明函数的返回值类型,而是使用return语句结束函数的执行同时返回任意的值,函数返回值类型与return语句返回表达式语句类型一致。
2.不论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行
例如:
- def c(x):
- x=x*2
- return x
- a=4
- t=c(a)
- print(t)
-
在python定义函数中注释起到了很大的作用,可以提示,解释函数,例如下述例子:
- def add(x,y):
- '''这个函数用来实现连个数相加
- 函数参数:
- x:整数
- y:整数
- 函数返回:
- x+y'''
- return x+y
- help(add)
- t=add(10,23)
- print(t)
-
所以说,在python中应该好好利用注释
1.有参数有返回值
例如:计算两个数的差并将结果返回
- def dif(a,b):
- """计算两个数的差值"""
- return a-b
- c=dif(a,b) #需要被打印,赋值,运算
- print(c)
-
2.有参数无返回值
例如:将两个字符串连接起来,组成一个字符串
- def show(s1,s2):
- """将两个字符串连接起来,组成一个字符串
- 函数参数:
- s1:字符串
- s2:字符串
- 函数返回:
- s1+s2"""
- print(s1+s2)
- # return None
- #对于没有返回值的函数而言,直接调用即可
- show("你好","世界")
- print(show("ABC","BCD"))
- #没有打return和return None意思一样 ,python 对于任何一个函数,他都会默认一个返回值
- #None 如果有其他返回值,那么None则失效,反之,如果没有返回值,则返回的是None
-
3.无参数有返回值
它一般操作的是全局变量
例如:
- def time():
- return 10
-
4.无参数无返回值
它一般操作的是全局变量
递归
函数的运算是基于栈的
函数在调用函数的时候,要避免相互调用,除非你需要用递归,但一定要设计递归的结束出口,否则会进入死循环
- def show1():
- show2()
- print("show1")
- return None
-
- def show2():
- show3()
- print("show2")
- return None
-
- def show3():
- show1()
- print("show3")
- return None
-
- show1()
-
-
在上述例子中,该函数会陷入无限循环,因为没有递归结束的出口
正确代码:
- def show1():
- show2()
- print("show1")
- return None
-
- def show2():
- show3()
- print("show2")
- return None
-
- def show3():
- #show1() 将这一句话注释到即可
- print("show3")
- return None
-
- show1()
-
具体解释如图:
形参和实参
形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的
变量作用域的问题
- a=1
- b=2
- def add(a,b):
- a=a*2 #2
- b=b*2 #4
- c=a+b
- return c
- c=add(a,b) #6
- print(c)
- print(a) #1
- print(b) #2
-
函数也是对象,例如:
- print(type(add))
- add0=add
- c=add0(a,b)
- print(c)
- #原来max表示函数对象
- print(max(1,2,3))
- #现在表示的是一个数字对象
- max=12
- print(max)
- #原来sum表示一个函数对象
- print(sum([4,5,6]))
- #现在sum表示一个数字对象
- sum=1
- print(sum)
-
由于python中虽然没有指针但它并不代表不能改变全局变量,python中可以通过global来改变,例如:
- a=10
- def change():
- print("20")
- global a
- a=30 #a到底是创建还是修改?
- print(a)
- print(change) #直接打印change打印函数对象的地址
- a=20
- print(change()) #打印出20和None
- print(a)
-
再调用change函数时,用global函数可以改变全局变量
在定义函数时,python支持默认值参数,即在定义函数时为形参设置默认值。在调用带有默认值参数的函数时,若没有为默认值函数传值,则函数会直接使用定义时的默认值;若为函数传值,则用传递的值代替默认值。