一。函数
定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
体现:当我输入一定的数据以后,我能根据里面的执行步骤,算出 另一些数据的值;得到数据,获取输出值。
形式参数: 函数在定义的时候写的参数。变量名 list_value, element
实际参数: 函数在调用的时候写的参数。list_value= ['列表'] ,element ='数值1'
位置参数 positional argument: 形式参数和实际参数要一一按照顺序对应。不多不少, 位置一样。
1)形式参数
list_value、element代表形式参数
def append(list_value, element):
"""对列表进行数据添加"""
list_value.append(element)
return list_value
2)实际参数
list_value=['列表'], element='数值1'代表函数append()的实际参数
def append(list_value, element):
"""对列表进行数据添加"""
list_value.append(element)
return list_value
print(append(list_value=['列表'], element='数值1'))
运行结果:
3)位置参数
示例1:
def(空格) 函数的名称 (位置参数1, 位置参数2, 位置参数3):
"""文档字符串 docstring
函数的注释,这个函数是干嘛用的。
参数:
返回值:
"""
(缩进)函数体(函数具体执行的逻辑)
return 函数的返回值(输出)
例子:
def add(a, b):
"""两个数相加"""
print("函数正在执行")
c = a + b
return c
调用:add(1,2)
运行结果:
4)默认参数
注意:
1.默认参数指在函数定义的时候,给参数一个缺省值。当在函数调用的时候,没有传入改参数的实际参数时,则直接使用这个缺省值。
2.默认参数必须放到位置参数的后面
如果调用函数的时传入了这个实际参数,默认值不会生效。
优点:可以简化函数调用的过程,只需要传入少量参数就可以实现调用过程。
def(空格) 函数的名称 (默认参数1 = a, 默认参数2 = b, 默认参数3 = c):
"""文档字符串 docstring
函数的注释,这个函数是干嘛用的。
参数:
返回值:
"""
(缩进)函数体(函数具体执行的逻辑)
return 函数的返回值(输出)
例子:
def add(a = 1, b = 2):
"""两个数相加"""
print("函数正在执行")
c = a + b
return c
调用1(直接使用默认参数):
print(add())
运行结果:
调用2(不使用默认参数,使用实际参数):
print(add(3))
运行结果:
5)关键字参数
关键字参数名字相当于形式参数的名字
作用:可以提高函数调用时候的可读性,可以交换参数的顺序,更加容易理解实际参数的意义。
与位置参数的区别:以不按照顺序进行调用,可以交换顺序。
注意点:关键字参数也要放到位置参数的后面。
例子(交换参数位置):
def get_name(firstname, middle, lastname=""):
"""获取名字"""
return firstname + middle + lastname
a = get_name('你好', lastname='世界', middle='全')
print(a)
运行结果:
6)可变长参数
作用:在函数参数不可知的情况下使用可变长参数。
形式:
1.元组可变长参数:参数名前有一个" * "
可以无限获取函数参数直到不能获取
2.字典可变长参数:参数名前有两个 " ** "
可以无限获取函数键值对参数直到不能获取
例子1(元组可变长参数):
def get_name(*names ):
"""元组可变长参数"""
print(names)
print(type(names))
get_name('可变长1', '可变长2', '可变长3')
运行参数:
例子2(位置参数与元组可变长参数):
def get_name(firstname, *names ):
"""位置/可变长"""
print(firstname)
print(type(firstname))
print(names)
print(type(names))
return firstname
get_name('位置', '可变长1', '可变长2')
运行结果:
例子3(字典可变长参数):
def get_name(**kwargs ):
"""字典可变长"""
print(kwargs)
print(type(kwargs))
get_name(middle='字典可变长1', yit='字典可变长2')
运行结果:
例子4(元组可变长与字典可变长):
def get_name(*names, **kwargs ):
"""元组可变长/字典可变长"""
print(names)
print(type(names))
print(kwargs)
print(type(kwargs))
get_name('可变长1', '可变长2' , middle='字典可变长1', yit='字典可变长2')
运行结果:
7)函数之间的调用:
范围:同一项目内,若不在同一项目需要先引用
例子(congratulate_offer函数中调用eat函数):
def eat(name, food):
print("{}喜欢吃食物:{}".format(name, food))
def congratulate_offer(offer_name, money):
"""庆祝拿到 offer """
print("{}希望拿到{}k 的 offer.".format(offer_name, money))
# 请客
eat(offer_name, '小龙虾')
congratulate_offer('我', 15)
运行结果:
8)函数的作用域:
全局变量:在函数外部指定的变量,可以在函数内部调用
局部变量:一般是指函数内部指定的变量,只能在该函数中使用
区别:1.局部作用域能获取并修改(需要在函数中声明”global“)全局变量;
2.全局不能获与修改取局部变量;
3.
例子1(局部作用域使用全局变量):
c = 10
def add(a, b):
return c + a + b
print(add(2,3))
运行结果:
例子2(局部作用域修改全局变量需要声明"global"):
c = 3
def add(a, b):
global c
c = c + 3
print(c)
#return a + b + c
add(3, 4)
print("最后的c:", c)
运行结果:
例子3(全局不能获取局部变量):
def add(a, b):
c = a + b
c += 5
return c
c = 4
add(5,7)
print(c)
运行结果:
1)print 和 return 的区别
print: 显示,在屏幕上打印
return: 函数运算的结果,获取结果以后不一定会打印,显示出来
2)return
1.函数里面 return 表示函数的返回值,可以在调用函数之后通过变量进行接收
2.return 知识点2: 函数体遇到 return 就终止运行, 相当于 for/ while 的 break,
3.函数调用以后得到的数据是由 return 决定的。
4.函数没有 return , 得到的数据就是 None
例子:
打印函数return值
def add(a, b):
"""两个数相加"""
print("函数正在执行")
c = a + b
#print(c)
return c
result=add(1,2)
print(result)
运行结果:
例子: 遇到return就会终止;
函数调用得到的结果是由return决定的
def add(a, b):
if a > 100:
return a + b
elif a == 100:
return a + 2*b
else:
return a + 3 * b
print(add(101, 6))
运行结果(执行的是第一个if的结果):
例子:函数没有return,得到的数据是None
def add( a, b):
c = a + b
print(add(1,2))
运行结果: