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().但你也可 ...
随机推荐
- web端自动化——python多线程
Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁.threading基于Java的线程模型设计. 锁(Lock)条件变 ...
- ROW_NUMBER()函数使用详解
原文地址:https://blog.csdn.net/qq_30908543/article/details/74108348 注:mysql貌似不适用,本人测试未成功,mysql实现方式可参考:ht ...
- 找出整数数组中出现次数超过数组长度一半的元素(Java)
Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...
- 无聊的活动/缘生意转(2018 Nova OJ新年欢乐赛B题)解题报告
题目2(下面的太抓 我重新写了个背景 其他都一样) 无聊的活动 JLZ老师不情愿的参加了古风社一年一度的活动,他实在不觉得一群学生跳舞有什么好看,更不明白坐在身后的学生为什么这么兴奋(看小姐姐),于是 ...
- 虚拟机中Linux环境下使用Squid部署代理缓存服务(及透明传输)
小知识: 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低原服务器的负载. 不仅如此,还为读者们添加了对指定IP地址.网页关键词.网址与文件后缀的ACL访问限制功能的实 ...
- 将linux的root用户的家目录由/root切换为/home/root
步骤1,先以root登录,然后创建目录/home/root步骤2,vi /etc/passwd里root用户的家目录为/home/root:步骤3,cp -rf /root/ /home/将原来的ro ...
- 【HC89S003F4开发板】 8c转义成汇编工程
HC89S003F4开发板建立汇编工程 选择编译文件 @选用开发板闪灯例程,将例程删除多余的注释,后面生成的文件会更直观. #define ALLOCATE_EXTERN #include " ...
- vue 下拉刷新数据的插件的使用:
1.安装: npm i vue-scroller -S npm install vue-scroller -D 2.在需要加载的页面中引入,或在公共js文件中引入: import VueScrolle ...
- RAP2 前后端开发利器搭建
RAP2 是一个api管理系统,前后端协作开发的利器. 在线体验地址http://rap2.taobao.org Web接口管理工具,开源免费,接口自动化,MOCK数据自动生成,自动化测试,企业级管理 ...
- 简单即时通讯、聊天室--java NIO版本
实现的功能: 运行一个服务端,运行多个客户端.在客户端1,发送消息,其余客户端都能收到客户端1发送的消息. 重点: 1.ByteBuffer在使用时,注意flip()方法的调用,否则读取不到消息. 服 ...