python 函数

    xiaoxiao2025-06-11  23

    目录

     

    python函数的参数传递:

    参数类别:

    匿名函数(lambda表达式)

    return语句 

    变量作用域

    global和nonlocal关键字


    python函数的参数传递:

    不可变类型:如数值、字符串、元组,类似c++的值传递可变类型:如列表、字典,类似c++的引用传递

    参数类别:

    必须参数:须以正确的顺序传入函数,调用时的数量必须和声明时一样,否则会输出positional argument数量错误关键字参数:允许函数调用时参数的顺序与声明时不一致默认参数:没有对应的参数传入时为其默认值。默认参数必须放在最后面,否则会报错不定长参数 一个星号*的参数会以元组的形式导入,存放所有未命名的变量参数。:如def fun(arg1,*vartuple)两个星号**的参数会议字典的形式导入

    匿名函数(lambda表达式)

    语法:lambda arg1, arg2, ..., argn : expression。如sum = lambda a,b:a+blambda函数有自己的命名空间,并且不能访问自己参数列表之外或全局命名空间里的参数虽然lambda函数看起来只能写一行,却不等同于c++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率

    return语句 

    return语句用于退出函数,不带参数值的return语句返回None不同于c语言,python函数可以返回多个值,以元组的形式 def fun(a,b): "返回多个值,结果以元组形式表示" return a,b,a+b print(fun(1,2)) #输出 (1,2,3)

    变量作用域

    python的变量作用域一共有4种:

    local:局部作用域。定义在函数内部的变量拥有一个局部作用域,局部变量只能在其被声明的函数内部访问enclosing:闭包函数外的函数中global:全局作用域。定义在函数外的拥有全局作用域,全局变量可以在整个程序范围内访问。built-in:内置作用域(内置函数所在模块的范围)(不常用)

    python按照local ==> enclosing ==>global ==> built-in的顺序查找变量,例如:

    g_count = 0 # 全局作用域 def outer(): o_count = 1 # 闭包函数外的函数中 def inner(): i_count = 2 # 局部作用域

    注意:python中只有模块(module),类(class),以及函数(def,lambda)才会引入新的作用域。其它的代码块(如if/elif/else, try/except, for/while等)是不会引入新的作用域的,即这些语句内定义的变量,外部也可以访问

    global和nonlocal关键字

    global:函数内可以访问全局变量,但不能更新(修改)其值!当在局部作用域内想修改全局变量时需在局部作用域内使用global进行声明 num = 1 def fun1(): global num # 需要使用 global 关键字声明 print(num) num = 123 print(num) fun1() print(num) #输出 1 123 123 nonlocal :修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字。例如: def outer(): num = 10 def inner(): nonlocal num # nonlocal关键字声明 num = 100 print(num) inner() print(num) outer() #输出 100 100

     

    最新回复(0)