python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)

一、函数的动态传参

  1.*args位置参数动态传参

def chi(*food):
    print(food)
chi("烧烤","火锅","虾吃虾涮","烤鱼")

    多个位置参数传递进去,收到的内容是元组tuple,动态参数的位置必须要在位置参数后面

  2**kwargs 关键字参数动态传参

def chi(**food):
    print(food)
chi(zhangqing="吃点好的",lianda="吃不辣的",徐建="方便面")
#{‘zhangqing‘: ‘吃点好的‘, ‘lianda‘: ‘吃不辣的‘, ‘徐建‘: ‘方便面‘}
#输出结果是以字典的形式

  顺序:位置参数、*args、默认值、**kwargs

  def func(*args,**kwargs):   这个样式的函数比较强大,能满足的需求很多。

    pass

  形参的位置*,**:聚合

  实参的位置*,**:打散

    位置参数的动态传参:把list、tuple、set、str 进行迭代打散

    关键字动态传参: 打散成字典

二、命名空间

  1.内置命名空间:存放在python解释器为我们提供名字的如list、tuple、str等这些都是内置命名空间。

  2.全局命名空间:我们在py文件中,函数外生命的变量都属于全局命名空间。

  3.局部命名空间:在函数中生命的变量会放在局部命名空间。

  作用域:

    1.全局作用域:内置+全局

    2.局部作用域:局部(函数被调用)

  globals() 查看全局中的内容

  locals() 查看当前作用域中的内容

三、函数嵌套

  *只要遇见了()就是函数的调用,如果没有()就不是函数的调用。

  *函数可以互相的嵌套,无限的嵌套。

四、global和nonlocal关键字

  global:在局部访问全局中的内容

a = 100
def func():
    global a    # 加了了个global表示不不再局部创建这个变量量了了. ?而是直    接使?用全局的a
    a = 28
    print(a)
func()
print(a)
#global表?示. 不再使?用局部作?用域中的内容了了. ?而改?用全局作?用域中的变量量

  nonlocal:在局部寻找外层函数中离他最近的那个变量,但是不会到全局中寻找。

a = 10
def func1():
    a = 20
    def func2():
        nonlocal a
        a = 30
        print(a)
    func2()
    print(a)
func1()
结果:
加了nonlocal
30
30
不不加nonlocal
30
20    

原文地址:https://www.cnblogs.com/qq849784670/p/9449424.html

时间: 2024-10-29 19:12:09

python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)的相关文章

python 动态传参,名称空间和作用域,函数的嵌套,global和nonlocal

一.动态传参 1.位置参数动态传参 def func(*args):    *表示动态传参 * 在这里表示接受位置参数的动态传参,接收到的是元组. def fun(*args): print(args) fun('aaa',3,5,6,'ccc') # 结果('aaa', 3, 5, 6, 'ccc') 2.关键字的动态传参 def func(**kwargs): 函数体(代码块) func(n=7,m="aa"): **表示接收关键字参数的动态传参,接收到的是字典. def fun(

python--动态传参,作用域,函数嵌套

一 . 动态传参(重点)  * ,  ** * 与 ** * 在形参位置. * 表示不定参数, 接收的是位置参数 接收到的位置参数的动态传参: 都是元组 def eat(*food): # 在形参这里把传递过来的实参进行了聚合,聚合成了元组 print(food) eat("小米粥") eat("小米粥", "咸鸭蛋") eat("小米粥", "爆米花", "咸鸭蛋", "蒜茄

python函数的动态传参.作用域与命名空间

一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi(good_food = "胡辣汤") # 关键字传参 chi("胡辣汤", "疙瘩汤", "西红柿鸡蛋汤") chi("大猪蹄子","大汉堡","薯条","圣

动态传参(*args **kwargs 无敌传参) 作用域globals locals和名称空间 函数的嵌套 关键字nonlcas global

动态传参(重点) *, ***, ** :形参: 聚合 位置参数* -> 元组 关键字** -> 字典 实参: 打散 列表, 字符串, 元素 -> * 字典 -> ** 形参的顺序(重点): 位置 *args(位置参数动态传参) 默认值 **kwargs(关键字动态传参)以后写参数. 可以随意的进行搭配, 但是, 顺序不能串 * 在形参位置. * 表示不定参数-接收的是位置参数接收到的位置参数的动态传参: 都是元组def chi(*food): # 在形参这里把传递过来的实参进行了

函数的第二节课,动态传参,动态关键字参数,作用域,关键字global和nonlocal

今日内容总结: 一.函数参数--动态传参 动态参数必须是在位置参数后面,比如:def chi(a,b,*food): print("我要吃",a,b,food)chi("大米饭","小米饭","黄瓜","西红柿") 默认值参数必须是在最后位置,比如:def chi(a,b,*food,c="馒头"): print(a,b,food,c)chi("香蕉", "

10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量

今日主要内容 1. 动态传参(重点) *, ** *, ** : 形参: 聚合 位置参数* -> 元组 关键字** -> 字典 实参: 打散 列表, 字符串, 元素 -> * 字典 -> ** 形参顺序(重点): 位置, *args, 默认值, **kwargs 无敌传参 def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数 pass 2. 作用域和名称空间 名称空间: 用来存放名字(变量, 函数名, 类名, 引

函数定义,返回值,传参,命名空间,闭包

函数的返回值: return是返回给函数的调用者 函数外面的代码想要获取函数的执行结果,就可以在函数里,用return语句把结果返回. 注意:在函数的执行过程中主要遇到return语句,就会停止执行并返回结果, so可以理解为return语句代表着函数的结束 如果未在函数中指定return,那这个函数的返回值为none 函数的返回值,可以返回一个函数名(可以将嵌套函数里的执行结果return给函数体外,进行执行) return永远且只能返回一个值,,如果返回多各值呢? def func1(nam

js函数动态传参

js函数体内可以通过arguments对象来接收传递进来的参数,利用这一对象属性可以动态传参. function box() { return arguments[0]+' | '+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 arguments对象的length属性可以得到参数的数量. function box() { return arguments.length; //得到6 } alert(box(1,2,3,4,5

day10 动态传参

一动态传参 1动态传参,可以接受任意的参数 顺序: 位置参数 *args 默认值  **kwargs 1位置参数的动态传参 写法*参数名  例如 *args 接受的参数是tuple # def eat(*good): #动态传参,可以接受多个实参 # print(good) # eat("可乐","麻辣烫","火锅") # eat("麻辣烫") #接受的是元祖,括号里面的元素每个用逗号隔开 2关键字参数的动态传参, 写法 **