python定义函数

python 定义函数

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张图片
所以说,在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()

python定义函数_第2张图片
在上述例子中,该函数会陷入无限循环,因为没有递归结束的出口
正确代码:

def show1():
    show2()
    print("show1")
    return None

def show2():
    show3()
    print("show2")
    return None

def show3():
    #show1()      将这一句话注释到即可
    print("show3")
    return None

show1()

在这里插入图片描述
具体解释如图:
python定义函数_第3张图片
形参和实参
形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的
变量作用域的问题

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定义函数_第4张图片
由于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定义函数_第5张图片

默认值参数

在定义函数时,python支持默认值参数,即在定义函数时为形参设置默认值。在调用带有默认值参数的函数时,若没有为默认值函数传值,则函数会直接使用定义时的默认值;若为函数传值,则用传递的值代替默认值,例如:

你可能感兴趣的:(python)