【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal
1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散
# 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去 def func(*args, **kwargs): # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典 print(args) print(kwargs)
def chi(good_food, bad_food,drink, ice, jiu): print("我要吃", good_food, bad_food) chi("盖浇饭", "辣条") # 位置参数 > *动态参数 > 默认值参数 def chi( *food, a, b): # 可以传入任意的位置参数 print("我要吃", food) # 动态参数接收到的是tuple类型的数据 chi("盖浇饭", "辣条", "面条") def func(a, b, c, *args, d = 5): print(a, b, c, d, args) func(1,2,3) func(1,2,3,4,5,6,7, d ="马大哈") def chi(*food): print("我要吃", food) # 写函数. 给函数传递任意个整数. 返回这些数的和 def he(*n): sum = 0 for e in n: sum += e return sum print(he(5)) # 动态接收关键字参数 # *位置参数 # **关键字参数 def func(**food): # **food动态接收关键字参数 print(food) # 接收到的是字典 func(good_food="盖浇饭", bad_food="辣条", drink="冰封") # 关键字参数一定在位置参数后面 # 位置参数 > *args > 默认值 > **kwargs # # 这个函数可以接收所有的参数(无敌的) def func(*args, **kwargs): print(args) print(kwargs) func(1, 2, 5, 6, name="taibai",age=18, sex="不详") # 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去 def func(*args, **kwargs): # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典 print(args) print(kwargs) # lst = ["马虎疼", "大洋哥", "小花生", "毛尖妹妹"] # func(*lst) # 实参, 打散, 迭代产生的 dic = {"name":"太白", "alex":"wuse"} func(**dic) # 把字典打散. 以key=value形式进行传参 def func(a, b): """ 计算a+b的和, 返回一个数 :param a: 第一个数 :param b: 第二个数 :return: 返回计算之后的和 """ return a + b # # 定义函数 # def 函数名(形参): 1.位置参数, 2, *args, 3.默认值参数, 4. **kwargs # 函数体 return 返回值 # 函数名(实参) 1. 位置参数. 2.关键字参数. 3. 混合参数,
2. 命名空间和作用域 命名空间: 1. 内置命名空间: python解释内部运行时的变量函数 2. 全局命名空间: 我们在py文件中直接声明出来的变量,函数 3. 局部命名空间: 在函数内部声明的变量和函数. 作用域: 1.全局作用域:内置+全局 2.局部作用域:局部 globals() 查看全局作用域中的名字 locals() 查看当前作用域中的名字
a = " # 全局 b = 36 # 全局 def func(): # 全局 c = "马化腾" # 局部 def func2(): print(c) a = 10 def func(): a = 20 print(a) # 就近原则 print(globals()) # globals() 获取到全局作用域(内置,全局)中的所有名字 print(locals()) # locals() 查看当前作用域中的所有名字 func()
3. global和nonlocal global: 把全局变量拿到局部来用. nonlocal: 把离他最近的一层的变量拿过来.不会找全局
def func(): global a # a 不再是局部变量. 是全局变量 a = 30 # 把全局中的a重新赋值成30 print(a) func() print(a) a = 10 def func1(): def func2(): nonlocal a # 找局部作用域中 离他最近的那个变量引入进来 a = 20 print(a) func2() print(a) func1() a = 1 def fun_1(): a = 2 def fun_2(): def fun_3(): nonlocal a a = 4 print(a) print(a) fun_3() print(a) print(a) fun_2() print(a) print(a) fun_1() print(a)
【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal的更多相关文章
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- python 全栈开发,Day10(动态参数,命名空间,作用域,函数嵌套)
一.动态参数 def func(a,b,c,d,e,f,g): pass func(1,2,3,4,5,6,7) 如果加30个参数呢?有没有万能的参数,可以代表一切参数呢? *args 动态参数,万能 ...
- python(3)-函数动态参数
先来看一段代码 def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2, ...
- python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
- C#学习笔记(十):函数和参数
函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...
- Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
- 跟着太白老师学python day10 函数嵌套, global , nonlocal
函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 d ...
- 《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用
原创文章,欢迎转载.转载请注明:关东升的博客 参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以 ...
- Python—day10 函数的参数分类
一.实参与形参 1.形参:定义函数,在括号内声明的变量名,用来接受外界传来的值 def fn(形参们): pass def fn(a,b,c):# 形参就是考虑实参的值, ...
随机推荐
- daemon_int
摘自 UNP #include "unp.h" #include <syslog.h> #define MAXFD 64 extern int daemon_proc; ...
- hdoj1575 Tr A(矩阵快速幂)
简单的矩阵快速幂.最后求矩阵的秩. #include<iostream> #include<cstring> using namespace std; ; int n,k; s ...
- ES6字符串相关扩展
变量的解构赋值 // 数组的解构赋值 let [a,b,c] = [1,2,3]; //1,2,3 let [a,b,c] = [,123,]; //undefined 123 undefined l ...
- Hbuilder用ajax连接eclipse中的servlet例子以及注意事项
今天用前端神器Hbuilder连接eclipse中的servlet,真是费了九牛二虎之力,才把问题解决 Hbuilder中的代码: test.html <!DOCTYPE html> &l ...
- 语义分割Semantic Segmentation研究综述
语义分割和实例分割概念 语义分割:对图像中的每个像素都划分出对应的类别,实现像素级别的分类. 实例分割:目标是进行像素级别的分类,而且在具体类别的基础上区别不同的实例. 语义分割(Semantic S ...
- easyUI制作slider小滑块,可拖动和精确输入
借助easyUI制作.完善slider小滑块. 可拖动.和在右边输入框精确输入 效果图: html代码: <div class="text_fl" >亮度设置:< ...
- 【Gitbook】实用配置及插件介绍
前言 实际效果可以查看这里 github地址 配置 title 设置书本的标题 "title" : "Gitbook Use" author 作者的相关信息 & ...
- 带你了解数据库中事务的ACID特性
前言 前面我们介绍过数据库中 带你了解数据库中JOIN的用法 与 带你了解数据库中group by的用法的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务,也是我们项目中或面试中经常会遇到 ...
- ELK构建MySQL慢日志收集平台详解
上篇文章<中小团队快速构建SQL自动审核系统>我们完成了SQL的自动审核与执行,不仅提高了效率还受到了同事的肯定,心里美滋滋.但关于慢查询的收集及处理也耗费了我们太多的时间和精力,如何在这 ...
- Memcached理解笔记4---应对高并发攻击
近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意攻击,不停的刷新产品各个服务入口,制造垃圾数据,消耗资源.他们的最好成绩,1秒钟可以并发6次,赶在Database入库前,Cache进行Mis ...