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

一 . 动态传参(重点)  * ,  **

  * 与 **

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

**在形参表示动态传参-关键字参数
关键字动态传参接收到的是字典
def func(**kwargs):  # 也是聚合. ** 聚合成字典
    print(kwargs)
func(a=1, b=2, c=3, haha="呵呵", good="not bad")

  无敌传参

# 无敌传参
def func(*args, **kwargs): # 参数没有限制. 随便传递
    print(args)
    print(kwargs)
func(1,2,3,4, a=3,b=5)

  聚合与打散

def chi(*food):  # 这里是形参  聚合
    print(food)
lst = ["胡萝卜", "大白菜", "大萝卜", "草", "果冻"]  # 这里要输入列表或元组
chi(*lst)   # 这里的*是打散 形成元组

def chi(**food): # 聚合, 聚合成字典
    print(food)
dic = {"主食":‘面条‘, "副食":"土豆泥", "汤":"疙瘩汤"} # 这里要输入字典
chi(**dic, 甜点="冰激凌") # 打散. 打散成关键字, 甜点 = ‘冰激凌‘ 可加可不加

#  * 与 ** 放在形参是聚合, 放在实参是打散

  传参顺序

位置参数, *args, 默认值, **kwargs

二 . 作用域与名称空间

名称空间顾名思义就是装名称的,比如我定义一个a = 10,那么这个a 所在的空间就是名称空间
作用域可以理解为起作用的区域,全局作用域就是在全局都起作用的,是内置+全局名称空间, print , input 就是内置,局部作用域就是在局部起作用的区域.  

globals() 查看全局作用域
locals() 查看当前作用域

三 . 函数的嵌套

  函数的嵌套: 在函数中声明函数

    函在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置 

def outer():
    def inner():
        print("我的天哪")
    print("还可以这样写???")
    inner()
outer()

四 . nonlocal 和 global关键字

  global: 在局部引入全局变量

  nonlocal: 在局部..内层函数引入外层理他最近的那个变量

# 全局变量一般是不能随意的修改的
a = 10
def func():
    # 慎用.
    global a  # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
    a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在试图改全局变量
    print("里面的打印",a)
func()
print("外面的打印", a)

# nonlocal  在局部, 寻找离他最近的外层的一个变量
a = 50
def func1():
    # a = 10 # 局部
    def func2():
        nonlocal a # 不找全局, global找全局
        a += 10 # a = a + 10 python不让这么干
        print("func2", a)
    func2()
    print(a)
func1()
print(a)

原文地址:https://www.cnblogs.com/uiys/p/10673132.html

时间: 2024-10-31 19:01:04

python--动态传参,作用域,函数嵌套的相关文章

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(动态传参、命名空间、函数嵌套、global和nonlocal关键字)

一.函数的动态传参 1.*args位置参数动态传参 def chi(*food): print(food) chi("烧烤","火锅","虾吃虾涮","烤鱼") 多个位置参数传递进去,收到的内容是元组tuple,动态参数的位置必须要在位置参数后面 2**kwargs 关键字参数动态传参 def chi(**food): print(food) chi(zhangqing="吃点好的",lianda=&quo

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

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

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

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

动态传参(*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("香蕉", "

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关键字参数的动态传参, 写法 **

uploadify的用法与动态传参 提供demo下载

---恢复内容开始--- 官网:http://www.uploadify.com/   一款不错的上传插件.官方文档http://www.uploadify.com/documentation/ 用法网上很多.今天快乐我在项目中想动态的穿选择,然后上传,同时服务器端,接受到参数与图片的地址.可是uploadify,直接是获取到,页面才加载的值.所以搜了一下.找到的办法.但都是旧版本的.今天我来写个新3.21版本. 要点     1.关闭自动上传.红色地方 $('#upload').uploadi