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支持默认值参数,即在定义函数时为形参设置默认值。在调用带有默认值参数的函数时,若没有为默认值函数传值,则函数会直接使用定义时的默认值;若为函数传值,则用传递的值代替默认值。