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
python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)的更多相关文章
- python之路--动态传参,作用域,函数嵌套
一 . 动态传参(重点) * , ** * 与 ** * 在形参位置. * 表示不定参数, 接收的是位置参数 接收到的位置参数的动态传参: 都是元组 def eat(*food): # 在形参这里 ...
- python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
- python记录_day10 动态传参 命名空间 作用域
一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...
- 函数动态传参,命名空间,gloabal,nonlocal关键字
一.函数参数->动态传参(形参的第三种) 动态参数分为两种: 1)动态接收位置参数 普通的位置传参: def func(quality_food,junk_food): print('我要吃', ...
- 函数补充:动态参数,函数嵌套,global与nonlocal关键
一丶动态参数 1.*args 位置参数,动态传参 def func(*food): print(food) print(func("米饭","馒头"," ...
- python--动态传参,作用域,函数嵌套
一 . 动态传参(重点) * , ** * 与 ** * 在形参位置. * 表示不定参数, 接收的是位置参数 接收到的位置参数的动态传参: 都是元组 def eat(*food): # 在形参这里 ...
- Python 动态传参
def chi(zhushi, cai, fushi, tang, tiandian): print(zhushi,cai,fushi,tang,tiandian) chi("大碗大米饭&q ...
- glob.glob()、os.path.split()函数、global和nonlocal关键字
1. glob.glob() glob模块是Python最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 查找文件时只会用到三个匹配符: * :匹配0个或多个字符 ? : 匹配 ...
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...
随机推荐
- SpringBoot学习笔记:读取配置文件
SpringBoot学习笔记:读取配置文件 配置文件 在以往的项目中,我们主要通过XML文件进行框架配置,业务的相关配置会放在属性文件中,然后通过一个属性读取的工具类来读取配置信息.在SpringBo ...
- 阿里nacos k8s部署
阿里nacos k8s部署 [root@master1 nacos]# cat nacos-quick-start.yaml --- apiVersion: v1 kind: Service meta ...
- RabbitMQ官方教程二 Work Queues(GOLANG语言实现)
RabbitMQ官方教程二 Work Queues(GOLANG语言实现) 在第一个教程中,我们编写了程序来发送和接收来自命名队列的消息. 在这一部分中,我们将创建一个工作队列,该队列将用于在多个wo ...
- setInterval【计时器】
~function(){ const nextPushTime = $('#nextPushTime_promotion_push'); const prevTime = new Date('2017 ...
- ubuntu18.10 安装nodejs
进入官网下载页面 下载对应版本 2.解压tar.xz文件在linux下,大部分情况下不能直接解压tar.xz的文件. 需要用 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx. ...
- python线程池ThreadPoolExecutor(上)(38)
在前面的文章中我们已经介绍了很多关于python线程相关的知识点,比如 线程互斥锁Lock / 线程事件Event / 线程条件变量Condition 等等,而今天给大家讲解的是 线程池ThreadP ...
- Valgrind工具------可以分析内存泄漏
Valgrind 是个开源的工具,功能很多.例如检查内存泄漏工具---memcheck. 安装: 1)官网下载:http://www.valgrind.org/downloads/ , 下载tar.b ...
- kill 掉 占据端口的进程
netstat -anp | grep 80kill -9 进程号
- 020 Android 常用颜色对应表
1.Android colors.xml常用颜色汇总 <?xml version="1.0" encoding="utf-8"?> <reso ...
- [VS] - Visual Studio 智能感知无法启用 之解决
背景 VS 2017 智能感知无法使用,重置 "导入和导出设置..." 后仍无法使用. 解决 我在 VS 上安装了 Resharper 的,猜测可能跟其配置有关,重置 Intell ...