python_函数

一。函数

定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

体现:当我输入一定的数据以后,我能根据里面的执行步骤,算出 另一些数据的值;得到数据,获取输出值。

形式参数: 函数在定义的时候写的参数。变量名 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))
运行结果:


原文地址:https://www.cnblogs.com/newsss/p/12779568.html