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.人工 ...
随机推荐
- 用vmware workstation制作cloudstack(kvm)镜像及问题解决办法
说明1:vmware workstation镜像是vmdk格式 说明2:cloudstack配置文件目录:/run/libvirt/qemu/ kvm配置文件目录:/etc/libvirt/q ...
- VM快照-克隆重要应用讲解及克隆后网卡问题解决
快照:snapshot 1---2---3---5 用于以后 rollback 1 2 3 5 克隆前关机:halt 克隆之后连不上网 解决办法: 1.编辑eth0的配置文 vi/etc/syscon ...
- 无需安装Oracle Client连接Oracle数据库
介绍 当我们采用 ODP.NET 检索Oracle 数据库的时候,Oracle客户端是必须安装.假如当时电脑上没有安装Oracle客户端,就不能这么用了,这时候Oracle.ManagedDataAc ...
- javaweb 关于页面获取数据
EL(Excepress Language表达式语言) 1.....所有的EL都是以$"{"开始,以"}"结尾的.例:${sessionScope.user.s ...
- 微信小程序腾讯云php后台解决方案
微信小程序腾讯云php后台解决方案 微信小程序前段需要添加必要的文件以配合后端 (1)wafer2-client-sdk sdk提供了几种接口包括登陆,获取用户openid,图片上传等 (2)conf ...
- 解决JSON.stringify()自动将中文转译成unicode的方法
最近在工作中,发现在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即\u****的形式.查找资料后发现,与标准的JS ...
- 【Unity与23种设计模式】迭代器模式(Iterator)
GoF中定义: "在不知道集合内部细节的情况下,提供一个按序方法存取一个对象集合体的每一个单元." 迭代器模式由于经常使用到 已经被现代程序设计语言纳为标准语句或收录到标准函数库中 ...
- SpringBoot(四)SpringBoot中lombok使用
lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写 ...
- Git分支(5/5) -- 解决合并的冲突
如果两个分支上都对同一个文件进行了修改, 那么就有可能发生冲突. 首先创建一个分支, 并切换到该分支上: 然后修改index.html, 修改几个地方吧. 然后查看状态, 并commit: 然后切换到 ...
- 【Python】 更多数据类型collections&简易数据文件shelve
■collections collections在python内建的数据类型基础上新增一些实用的数据类型,其目的在于增加代码的可读性?(虽然我自己没怎么用过..) ① deque 双端队列 q = d ...