Python之旅.第三章.函数3.28
一、命名关键字参数:
什么是命名关键字参数?
格式:在*后面参数都是命名关键字参数
特点:
1 必须被传值
1 约束函数的调用者必须按照key=value的形式传值
2 约束函数的调用者必须用我们指定的key名 def foo(x,y,*,z): #创建foo函数,z为命名关键字参数
print(x,y,z)
#foo(1,2,aaa=3) #报错,z为命名关键字参数,只能用用关键字z=值
foo(1,2,z=3)
——————————————————————————————
def auth(*args,name,pwd): #设定,name,pwd为命名关键字参数
print(name,pwd) auth(pwd='213',name='egon') #输入关键字参输
二、函数的嵌套:
1、函数的嵌套调用:在函数内又调用了其他函数
def max2(x,y): #判断两个值大小,返回大的值
if x > y:
return x
else:
return y def max3(x,y,z): #用嵌套方法判断三个数的值
res1=max2(x,y)
res2=max2(res1,z)
return res2 print(max3(11,199,2)) 2、函数的嵌套定义:在函数内又定义其他函数
def func1(): #定义func1函数
print('from func1')
def func2(): #func2=内存地址 #嵌套定义func2函数
print('from func2') print(func2) #<function func1.<locals>.func2 at 0x0000024907A098C8> #输出func2函数名地址
func2() func1() —————————————————————————————————— def f1(): #嵌套定义,调用f1执行,得出所有函数输出的值,全部被使用
print('f1')
def f2():
print('f2')
def f3():
print('f3')
f3()
f2()
f1() '''
f1
f2
f3
'''
三、命名空间与作用域
一:名称空间:存放名字与值绑定关系的地方
x=1111111111 def func():
pass 二:名称空间分为三类 1 内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效 2、全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效 3、局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放与局部名称空间),
在函数调用时临时生效,函数结束则失效 加载顺序:内置名称空间-》全局名称空间-》局部名称空间
查找名字:局部名称空间-》全局名称空间-》内置名称空间 len='global' #调用f1,运行到f2方法输出len,从当前向外查找值,最后输出为global
def f1():
# len=1
def f2():
# len=2
print(len)
f2() f1() 三:作用域
全局作用域:包含的是内置名称空间与全局名称空间的名字,
特点
1在任何位置都能够访问的到
2该范围内的名字会伴随程序整个生命周期 局部作用域:包含的是局部名称空间的名字
特点:
1、只能在函数内使用
2、调用函数时生效,调用结束失效
四、函数对象
函数在python中是第一类对象? 1、可以被引用
def bar(): #创建bar函数
print('from bar') f=bar #引用bar函数
f() 2、可以当中参数传入
def bar(): #创建bar函数
print('from bar') def wrapper(func): #func=bar #创建wrapper函数,设定参数func
func() #bar() wrapper(bar) #把bar当做参数传入 3、可以当做函数的返回值
def bar(): #创建bar函数
print('from bar') def foo(func): #func=<function bar at 0x00000225AF631E18> #创建foo函数,设定变量func,返回变量func
return func #return <function bar at 0x00000225AF631E18> f=foo(bar) #f=<function bar at 0x00000225AF631E18> #把bar函数当做参数传入变量func,成为foo函数的返回值
f() 4、可以当中容器类型的元素
def get(): #创建get 函数
print('from get') def put(): #创建put函数
print('from put') l=[get,put] #建立列表输入两个函数 l[0]() #安索引调用get函数
——————————————————————————————————
例:
def func():
print('from func') 1、func可以被引用
f=func 2、func可以当作参数传给x
def bar(x):
print(x)
x() bar(func) 3、func还可以当作返回值
def bar(x): # x=func
return x #return func res=bar(func) #res=func
print(res)
res() 4 可以当中容器类型的元素
def auth():
print('登陆。。。。。') def reigster():
print('注册。。。。。') def search():
print('查看。。。。') def transfer():
print('转账。。。。') def pay():
print('支付。。。。') dic={
'1':auth,
'2':reigster,
'3':search,
'4':transfer,
'5':pay
} print(dic)
dic['2']() def interactive():
while True:
print("""
1 认证
2 注册
3 查看
4 转账
5 支付
""")
choice=input('>>: ').strip()
if choice in dic:
dic[choice]()
else:
print('非法操作') interactive() 五、闭包函数
1、闭包函数 闭:指的是定义在函数内部的函数
!!!作用域关系 在函数定义阶段就规定死了,与调用位置无关
def outter(): #创建outter函数,创建变量x
x=2
def inner(): #创建inner函数,输出x
# x=1
print('from inner',x) return inner #返回inner函数 f=outter() #f=inner #把返回的嵌套定义函数赋予f,这样f就可以调用被嵌套定义的函数了
f() 闭包函数:
1、定义在函数内部的函数
2、 并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数 def outter(): #定义函数outter,并定义变量name
name='egon'
def inner():
print('my name is %s' %name) #定义函数inner,输出name return inner #返回函数inner f=outter() #把嵌套定义函数inner赋值给f 了解:
为函数体传值的方式
方式一:将值以参数的形式的传入
import requests #闭合函数,变换变量,变换地址
def get(url):
response=requests.get(url)
if response.status_code == 200:
print(response.text)
get('https://www.baidu.com') 方式二
import requests
import time def outter(url): #url='https://www.baidu.com #定义函数outter,形参url
def get(): #定义函数 get 根据网址,怕网址数据
response=requests.get(url)
if response.status_code == 200:
print(response.text) return get #返回函数get baidu=outter('https://www.baidu.com') #把带实参百度地址的函数赋予baidu,以后只需要运行只需要运行baidu()就可以了
python=outter('https://www.python.org') #把带实参python地址的函数赋予python,以后只需要运行只需要运行python()就可以了
Python之旅.第三章.函数3.28的更多相关文章
- Python之旅.第三章.函数4.01/4.02
一.三元表达式 #普通的判断大小函数def max2(x,y): if x > y: return x else: return yres=max2(10,11)print(res)x=12y= ...
- Python之旅.第三章.函数3.30
一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置 ...
- Python之旅.第三章.函数3.29
一.无参装饰器 1 开放封闭原则 软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的 也就是说我们必须找到一种解决方案: 能够在不修改一个功能源代码以及调用方式的前提 ...
- Python之旅.第三章.函数3.27
一.形参与实参 1.形参与实参是什么? 形参(形式参数):指的是 在定义函数时,括号内定义的参数,形参其实就变量名 实参(实际参数),指的是 在调用函数时,括号内传入的值,实参其实就变量的值 x,y是 ...
- Python之旅.第三章.函数3.26
一.函数: 1.为什么要有函数?什么是函数? 1.组织结构不清晰,可读性差 2.代码冗余 3.管理维护的难度极大,扩展性 具备某一个功能的工具就是程序的中函数 事先准备工具的过程---->函数的 ...
- python学习心得第三章
python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...
- python学习笔记——第三章 串
第三章 字符串学习 1.字符串不灵活, 它不能被分割符值 >>> format = "hello, %s. %s enough for ya?" >> ...
- 《零压力学Python》 之 第三章知识点归纳
第三章(第一个程序)知识点归纳 编程犹如写剧本.Python函数与剧本差别不大,你可以反复调用函数,而它每次都执行预定的“脚本”(脚本也可以指整个程序). 在Python IDLE中,真正的编程是从编 ...
- 跟着高淇学Python——第一到第三章总结
2019/10/26 第一章:Python介绍 Python是一种解释型,面向对象的语言.特点是: 可读性强 简洁,简洁 面向对象 免费开源 可移植性和跨平台性 丰富的库 可扩展性 应用范围:1.人工 ...
随机推荐
- 云计算之路-阿里云上:博客web服务器轮番CPU 100%
今天下午14:30左右开始,不知道怎么回事,博客站点负载均衡中的web服务器轮番CPU 100%.平时访问高峰5台服务器就能稳稳支撑,而今天发现CPU出现100%问题后就开始加服务器,结果到目前加到了 ...
- C# 程序之间传参数,Args 接收参数的处理
备忘,或者留给暂未接触但需要了解的人. C#在一个进程内传参数方法那是相当多,但是涉及到程序之间传参数就不是那么方便了(当然socket,内存共享等方式属于另一类,此处不讨论),我们的C或者C#,亦或 ...
- Oracle用户、授权、角色管理
创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...
- session、cookie与“记住我的登录状态”的功能的实现
Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能. Cookie的Domain和Path属性标识 ...
- GeoJSON C#判断某一点是否在某一区域范围之内
GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式.GeoJSON对象可以表示几何.特征或者特征集合.GeoJSON支持下面几何类型:点 ...
- 浅析JavaScript的prototype
一.JavaScript对象的创建 (1)对象方法 function Student(name){ this.name=name; this.showName=function(){ alert(&q ...
- EOS 新增的 WebAssembly 解释器,是什么鬼?
Daniel Larimer 在最近的博客中透露,EOS 新增了官方的 WebAssembly 解释器,用来解释执行 WebAssembly 智能合约,加上之前的编译执行,EOS 智能合约有了两种执行 ...
- Linux如此“自私”?
Linux如此“自私”? “如果当时我真的知道从头建立一个操作系统的难度,肯定是不会有勇气去做的.”1991年8月25日,随着林纳斯·托瓦兹(Linus Torvalds)这句“天真”的描述,Linu ...
- Mycat 分片规则详解--数据迁移及节点扩容
使用的是 Mycat 提供的 dataMigrate 脚本进行对数据进行迁移和节点扩容,目前支持的 Mycat 是1.6 版本,由于 Mycat 是由 Java 编写的因此在做数据迁移及节点扩容时需要 ...
- 前端的UI设计与交互之反馈示篇
为了帮助用户了解应用当前要做什么,也给用户的下一步行为做参考,以及了解操作后所产生的结果 ,当用户和系统需要交互时,使用不同的模式来反馈信息或结果.当设计者使用反馈或者自定义一些反馈时,请注意:为用户 ...