一、命名关键字参数:

什么是命名关键字参数?
格式:在*后面参数都是命名关键字参数
特点:
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的更多相关文章

  1. Python之旅.第三章.函数4.01/4.02

    一.三元表达式 #普通的判断大小函数def max2(x,y): if x > y: return x else: return yres=max2(10,11)print(res)x=12y= ...

  2. Python之旅.第三章.函数3.30

    一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置 ...

  3. Python之旅.第三章.函数3.29

    一.无参装饰器 1 开放封闭原则 软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的 也就是说我们必须找到一种解决方案: 能够在不修改一个功能源代码以及调用方式的前提 ...

  4. Python之旅.第三章.函数3.27

    一.形参与实参 1.形参与实参是什么? 形参(形式参数):指的是 在定义函数时,括号内定义的参数,形参其实就变量名 实参(实际参数),指的是 在调用函数时,括号内传入的值,实参其实就变量的值 x,y是 ...

  5. Python之旅.第三章.函数3.26

    一.函数: 1.为什么要有函数?什么是函数? 1.组织结构不清晰,可读性差 2.代码冗余 3.管理维护的难度极大,扩展性 具备某一个功能的工具就是程序的中函数 事先准备工具的过程---->函数的 ...

  6. python学习心得第三章

    python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...

  7. python学习笔记——第三章 串

    第三章 字符串学习 1.字符串不灵活, 它不能被分割符值 >>> format = "hello, %s. %s enough for ya?" >> ...

  8. 《零压力学Python》 之 第三章知识点归纳

    第三章(第一个程序)知识点归纳 编程犹如写剧本.Python函数与剧本差别不大,你可以反复调用函数,而它每次都执行预定的“脚本”(脚本也可以指整个程序). 在Python IDLE中,真正的编程是从编 ...

  9. 跟着高淇学Python——第一到第三章总结

    2019/10/26 第一章:Python介绍 Python是一种解释型,面向对象的语言.特点是: 可读性强 简洁,简洁 面向对象 免费开源 可移植性和跨平台性 丰富的库 可扩展性 应用范围:1.人工 ...

随机推荐

  1. datatable 多字段 排序;

    没有找到datatable的排序方面运用案例,根据接口,自己实现 所以记录一二,小伙伴们有更好的方法,欢迎讨论 1.需求图  2.需求 1)默认 未开启 灰色下箭头 2)第一次点击 :启动排序,降序- ...

  2. Chrome 浏览器各版本下载大全【转载】

    随着最近64位版本的 Chrome 浏览器正式版的推出,Chrome 浏览器再次受到广大浏览迷的重点关注,今天我们就整理一下各版本的 Chrome 浏览器 32位及64位的下载地址,方便各位浏览迷选择 ...

  3. LTS和其他解决方案的比较(官方)

    主要根据LTS支持的几种任务(实时任务.定时任务.Cron任务,Repeat任务)和其他一些 开源框架在应用场景上做比较. 实时任务,实时执行 这种场景下,当任务量比较小的时候,单机都可以完成的时候. ...

  4. ubuntu16.04 安装常见问题解决方案------输入法黑框

    我的系统是 lubuntu 16.04 刚安装输入法候选字的地方全是黑框,然后百度查到了 compton 和 xcompmgr 这两个说是窗口微调 透明 ,这两个方法对我的系统不管用 .各位如果遇到黑 ...

  5. PDB调试python代码常用命令

    常用命令 where(w) 找出当前代码运行位置 list(l) 显示当前代码的部分上下文 list n(line number) 显示指定行的上下文 list m, n(line number) 显 ...

  6. CSS之盒子模型(深入理解)

    CSS--盒子模型(Box Model) 简介: CSS盒子模型本质上是一个盒子,对网页中绝大部分的HTML元素进行包装定位(外边距,边框,内边距以及实际内容). 但是并不是所有的HTML元素都可以看 ...

  7. 【Flask】 利用uWSGI和Nginx发布Flask应用

    因为Flask比较容易上手,之前也拿flask写过几个小项目,不过当时天真地以为只要在服务器上nohup跑一个python脚本就算是成功发布了这个flask项目.实际上这还面临很多问题,比如并发性不好 ...

  8. Algorithm --> 最长公共子序列(LCS)

      一.什么是最长公共子序列     什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列. 举例如 ...

  9. 在nuxt中加入element-ui插件遇到的问题

    gen1.首先进入nuxt的官网跟着步骤实现内容. https://zh.nuxtjs.org/guide/plugins 2.在我们的项目目录中找plugin 根据图片中的表示引入内容: impor ...

  10. 【ASP.NET Core】如何隐藏响应头中的 “Kestrel”

    全宇宙人民都知道,ASP.NET Core 应用是不依赖服务器组件的,因此它可以独立运行,一般是使用支持跨平台的 Kestrel 服务器(当然,在 Windows 上还可以考虑用 HttpSys,但要 ...