欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

(四)函数一

程序员文章站 2024-01-09 20:24:58
函数用途:去除重复代码,增加代码的可维护性 定义函数:def 函数名(): 【定义函数时不会执行】 调用函数:函数名() 【调用函数时才执行】 文档说明:第一行用字符串说明 形参:定义函数时的参数 实参:调用函数时的参数 传参的作用:同一个函数可以执行出不同的效果 1 def text(形参1,形参 ......
函数用途:去除重复代码,增加代码的可维护性
定义函数:def     函数名():    【定义函数时不会执行】
调用函数:函数名()    【调用函数时才执行】
文档说明:第一行用字符串说明
形参:定义函数时的参数        实参:调用函数时的参数
传参的作用:同一个函数可以执行出不同的效果
1 def text(形参1,形参2):
2     """文档说明"""
3     pass
4 
5 text(实参1,实参2)
6 help(text)  # 产看文档说明

PS:位置与个数必须一一对应

 
参数的类型:
    1、缺省参数(为形参赋值):带有默认值的参数。调用函数时,如果没有为缺省参数赋值,则为默认
         缺省参数必须再形参列表最后
1 def printinfo(name, age=35):         # age=35 :缺省参数
2    # 打印任何传入的字符串
3    print("name: %s" % name)
4    print("age %d" % age)
5 
6 # 调用printinfo函数
7 printinfo(name="miki")  # 在函数执行过程中 age去默认值35
8 printinfo(age=9 ,name="miki")
   
 2、位置参数:形参和实参需要一一对应的传递
    3、关键字参数(命名参数):指定要传递的形参名字(可以无序,在实参里使用)
    4、不定长参数:用一个星号,由元组来接收 (*args);用两个星号,,由字典来接收(**kwargs)
                             如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有**kwargs的话,**kwargs必须是最后的   
1 def functionname([formal_args,] *args, **kwargs):  # 不定长参数
2    """函数_文档字符串"""
3    function_suite
4    return [expression]
注意:
加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
 
返回值的作用:调用者需要使用函数结果(知道其结果)
返回值:
    1、return:会立即终止函数,回到函数调用的地方,多个return只执行第一个
    2、None:没有数据,函数没有返回值
    3、不同的分支上允许存在多个return返回。
ps: 函数里return什么都不写,专门用于终止函数
        return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据   那么默认是元组
 
函数类型分四种:
  • 无参数,无返回值
  • 无参数,有返回值
  • 有参数,无返回值
  • 有参数,有返回值
函数的嵌套:
    一个函数里面又调用了另外一个函数
def testB( ):
    print('---- testB start----')
    print('这里是testB函数执行的代码...(省略)...')
    print('---- testB end----')

def testA( ):
    print('---- testA start----')
    testB( )
    print('---- testA end----')

testA( )   # 执行
  {如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置}
 
局部变量:
        定义:在函数内部定义的变量,其作用范围仅限这个函数内部,只能在函数内使用,函数外部是不能使用的
全局变量:
        定义:在函数外定义的变量,能够在所有的函数中进行访问
{在函数里为全局变量,实际上创建了一个行的局部变量}
global:在函数里声明,修改全局变量
# 在一个函数里,全局变量与全局变量不能同名
 (四)函数一
 
打包、拆包:
打包:把多个值放在一个数据里
拆包:把一个拆分成多个值
除了对元组拆包之外,还可以对列表、字典等拆包
拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
 >>a, b = (11, 22)
 >> a = 11, b = 22
交换两个变量的值:a,b = b,a
 
附:1、传递实参时,在列表或元组前写一个星号,可以讲列表或元组拆分成单独的位置参数传递
       2、传递实参时,在字典前写两个星号,则会讲字典拆分成单独的关键字参数传递