python_0基础开始_day10
第十节
一、函数进阶
动态参数
*a r g s —— 聚合位置参数,动态位置参数
默认返回的是tuple元组
def eat(*args): # 函数的定义阶段 *聚合(打包) print(args) # tuple print(*args) # 函数体中的 * 打散(解包)eat(*args) # 打散可得迭代的数据类型
def eat(a,b,*c): print(a) print(b) print(c) # tupleeat("面条","米饭","馒头","大饼")# 返回的是 面条,米饭,(馒头,大饼)
k w a r g s —— 聚合关键字参数,动态默认参数
默认返回的是d i c t字典
def eat(a,b,*args,d=2,**c):# 位置参数 > 动态位置参数 > 默认参数 > 动态默认参数 print(a) print(b) print(d) print(args) # tuple print(c) # dicteat("面条","米饭","大烧饼","大煎饼",a1=1,b1=2)# 位置 > 关键字
参数位置 > 动态参数位置 > 默认参数位置 > 动态默认参数位置
定义的时候 * ** 都是聚合
函数体和实际参时 * a r g s 将元组中的元组打散,** k w a r g s将字典中的键获取
形参:
位置参数:
动态位置参数:先执行位置参数,位置参数接受后额外的参数动态参数进行接收,获取的是一个元组。
默认参数:
动态默认参数(默认):先执行默认参数,默认参数接受后额外的动态默认参数进行接收,获取的是一个字典。
实参和函数体:
*打散 **实参时能够使用
def eat(*args,**kwargs): # (万能传参) print(args) # tulpe print(kwargs) #dict lst = [1,23,4,6,7] dic = {"key1":1,"key2":3} # 应用场景 eat(lst,dic) # ([1, 23, 4, 6, 7], {'key1': 1, 'key2': 3}) # {} eat(*lst,**dic) # (1, 23, 4, 6, 7) # {'key1': 1, 'key2': 3}
# 数据库 ———— ** def func(*args,**kwargs): print(kwargs) func("key"=1,"ke1"=1)# 数据库都是传入的键值对
函数的注释
def 函数名(): """ 注释信息 :return: """ return# 函数名.__doc__查看注释内容# 函数名.__name__查看函数名称
名称空间
1,内置空间:Python解释器自带的空间
2,全局空间:p y文件顶格写的就是全局空间
3,局部空间:函数体就是局部空间
加载:
内置空间 > 全局空间 > 局部空间
取值:
局部空间 > 全局空间 > 内置空间
作用域:作用域就是作用范围, 按照生效范围来看分为 全局作用域 和 局部作用域
全局作用域:全局+内置
局部作用域:局部
函数的嵌套
不管在什么位置,只要出现函数名()就是在调用函数。
# 混合嵌套:def f1(): print(11)def f2(): print(22) f1()def f3(): print(33) f1()def run(): f3() f2() f1()run()#33#11#22#11#11def func(a): print(a) return f1(foo(a))def foo(b): print(b) return b + 5def f1(args): return args + 10print(func(5))#5#5#20def foo(a): a = 10 def f1(b): c = b def foo(c): print(c) print(foo.__doc__) foo(c) print(b) f1(a) print(a)foo(25)#10#None#10#10def foo(): a = 10 func(a)def func(a): print(a)foo()#10
global 和 nonlocal
global :只修改全局变量,如果全局没有,则创建一个新的
nonlocal:只修改局部变量,修改声明nonlocal 最近的一层,上层没有继续向上上层查找;只限制在局部,找不到就报错。
a = 10def func(): global a a = a - 6 print(a)print(a)#10 直接读取全局空间的值func()#4print(a)#4 global 已经改变了全局空间中a的值a = 100def func(): b = 10 def foo(): b = a# b = a = 100 def f1(): nonlocal b b = b + 5 # b = 100 + 5 print(b) # 105 f1() print(b) # 105 b的值随着nonlocal改变了 foo() print(b) # 10 读取的是相同空间的值func()print(a) # 100 全局空间的b 没发生改变
python_0基础开始_day10的更多相关文章
- python_0基础学习_day02
第二节 一,while while也称为无限循环.死循环 while 条件: 缩进 循环体 应用领域:音乐播放:单曲循环,列表循环,随机播放(也是有规律的) 登陆界面:…… 数学计算:1~100的和, ...
- python_0基础学习_day01
Python是一门动态解释型的强类型定义语言 一.变量 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止使用python的关键字(在pycharm中关键字明明变 ...
- python_0基础开始_day07
第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...
- python_0基础开始_day06
第六节 1.小数据池 ==,is,id ==:查看等号两边的值是否一样 a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog ...
- python_0基础开始_day03
第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 #得出结果 将十进制的168转 ...
- python_0基础开始_day05
第五节 一.字典 python的数据结构之一 字典 —— dict 定义:dic = {"key":"dajjlad"} 作用:存储数据,大量,将数据和数据起到 ...
- python_0基础开始_day04
第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...
- python_0基础开始_day13
第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...
- python_0基础开始_day12
第十二节 一,生成器 生成器的核心:生成器的本质就是迭代器 迭代器是python自带的 生成器是程序员自己写的一种迭代器 在python中有三种方式来创建生成器: 基于函数编写 推导式方式编写 pyt ...
随机推荐
- Python3 日期与时间戳互相转换(函数可调用)
一.前言 在开发中,我们经常会遇到时间戳转换日期,或者日期转换为时间戳: 日期格式:2019-08-01 00:00:00 时间戳格式:1564588800 关于时间戳 Unix时间戳(Unix ti ...
- Hbase底层解析
hfile+compaction 原理 用户数据写入先写WAL,再写缓存,满足一定条件后缓存数据会执行flush操作真正落盘,形成一个数据文件HFile.太多数据文件会导致数据查询IO次数增多,因 ...
- 将本地文件夹同步到github仓库中
参考博客 本地生成rsa密钥 cd ~/.ssh # 查看是否已经生成过密钥 ssh-keygen -t rsa -C "username on github" # -C表示注释 ...
- TCP输出 之 tcp_transmit_skb
概述 tcp_transmit_skb的作用是复制或者拷贝skb,构造skb中的tcp首部,并将调用网络层的发送函数发送skb:在发送前,首先需要克隆或者复制skb,因为在成功发送到网络设备之后,sk ...
- DatabaseLibrary数据库测试
DatabaseLibrary常用关键字 关 键 字 描 述 Connect To Database 连接数据库 Connect To Database Using Custom Params ...
- Android jni/ndk编程三:native访问java
一.访问静态字段 Java层的field和method,不管它是public,还是package.private和protected,从 JNI都可以访问到,Java面向语言的封装性不见了. 静态字段 ...
- TensorFlow 学习(3)——MNIST机器学习入门
通过对MNIST的学习,对TensorFlow和机器学习快速上手. MNIST:手写数字识别数据集 MNIST数据集 60000行的训练数据集 和 10000行测试集 每张图片是一个28*28的像素图 ...
- LC 656. Coin Path 【lock, Hard】
Given an array A (index starts at 1) consisting of N integers: A1, A2, ..., AN and an integer B. The ...
- centos的KVM初级安装
什么是KVM虚拟化技术?KVM(Kernel-based Virtual Machine),主流虚拟化技术之一,集成与Linux2.6之后版本中,通过linux内核提供任务调度及管理.kvm,在实现虚 ...
- springboot2.0+线程池+Jmeter以模拟高并发
声明:原创在这里https://blog.csdn.net/u011677147/article/details/80271174,在此也谢谢哥们. 1.目录结构 2.BusinessThread.j ...