目录
一、函数的介绍
如果在开发程序时,需要多次调用某一部分代码,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码组织为一个小模块,这就是函数。
二、函数的定义与调用
规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。return [表达式] 结束函数,不带表达式的return相当于返回 None。
调用函数: 函数名()
1.定义函数和调用函数的语法
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名():
函数体
def say_hello():
print('hello world')
print('hello python')
print('hello 李嘉豪')
注意:函数名要遵循标识符命名规则,并且遵循下划线命名法
调用函数:
函数名()
say_hello()
注意:函数只有在调用的时候才会执行。
2.函数说明(注释)
函数的第一行语句可以选择性地使用文档字符串用于存放函数说明。
查看函数注释的快捷键: ctrl+ q
def say_hello():
'''
这是一个打招呼的方法
你好世界,你好Python,你好李嘉豪
'''
print('hello world')
print('hello python')
print('hello 李嘉豪')
三、定义带有参数的函数
1、定义参数的格式
def 函数名(参数1,参数2,参数3,...):
函数体
def sum_num(aa, bb): # 此时,aa,bb是形参,并没有实际的值
print(aa, '---->', bb)
num1 = aa
num2 = bb
num3 = num1 + num2
print(num3)
sum_num(2, 4)
sum_num(32, 12)
# sum_num() # 报错,因为没有传递实参
调用的时候,这个函数定义时有几个参数,就需要传递几个参数
默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”
2、函数参数的类型
1、不可变类型参数:整数、字符串、元组
fun(a)内部修改 a的值,只是修改另一个复制的对象,不会影响 a 本身。
传递不可变类型参数,不会影响参数本身。
a = 10000
print(a) # 10000
print("a变量的id值----->", id(a)) # a变量的id值-----> 31292080
def func(b):
print(b) # 10000
print('b变量的id值----->', id(b)) # b变量的id值-----> 31292080
b = 200
print(b) # 200
func(a)
print(a) # 10000
2、可变类型:列表,字典
如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
传递可变类型参数,会影响参数本身。
outter_list = [1, 2, 3]
print('outter_list的id----->', id(outter_list)) # outter_list的id-----> 35656968
def func(inner_list):
print('inner_list的id------>', id(inner_list)) # inner_list的id------> 35656968
inner_list.append(4)
print(inner_list)
func(outter_list) # [1, 2, 3, 4]
print(outter_list) # [1, 2, 3, 4]
四、函数的返回值
所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果。
调用者根据需求利用返回值做不同的操作。
如果一个函数返回了一个数据,那么想要用这个数据,那么就需要使用变量保存
1、变量接收返回值
ret作为变量,接收了sun_num函数返回的num
def sum_num(aa, bb):
num = aa + bb
print(id(num)) # 498166864
return num
ret = sum_num(1, 2)
print(ret) # 3
print(id(ret)) # 498166864
2、返回None
代码如下,如果没有设置return,则默认返回None
def func():
print('func....')
ret = func()
print(ret) # None
3、return可以结束整个函数
代码如下,程序运行到return时,结束了。
最后的输出为:
func...
程序结束了
而没有输出zzz和xxx
def func(c):
print('func...')
a = 10
b = c
if b < a:
return
print('zzz')
print('xxx')
func(1)
print('程序结束了')
'''
func...
程序结束了
'''
4、返回多个值
返回多值其实就是返回一个tuple,在语法上返回一个tuple可以省略括号
语法如下:
def 函数名():
函数体
Return 值1,值2,...
def func():
a = 10
b = 20
return a, b
ret = func()
print(ret) # (10, 20)
print(type(ret)) # <class 'tuple'>
同样,也可以使用多个变量来接收返回的多个值,即元组中的内容
num1, num2 = func()
print(num1, num2) # 10 20
注意:
1.如果函数不写返回值,默认返回None
2.return 关键字有两个作用,一个作用是返回内容,另一个作用是结束此方法。
3.return 关键字后面不允许在写代码。
五、函数嵌套
1、在函数内部调用其他函数
def func1():
print('func1....')
def func2():
func1()
print('func2....')
def func3():
func2()
print('func3....')
func3()
'''
func1....
func2....
func3....
'''