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()

‘‘‘f1f2f3‘‘‘三、命名空间与作用域
一:名称空间:存放名字与值绑定关系的地方x=1111111111

def func():    pass

二:名称空间分为三类

1 内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效

2、全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效

3、局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放与局部名称空间),    在函数调用时临时生效,函数结束则失效

加载顺序:内置名称空间-》全局名称空间-》局部名称空间查找名字:局部名称空间-》全局名称空间-》内置名称空间

len=‘global‘   #调用f1,运行到f2方法输出len,从当前向外查找值,最后输出为globaldef 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可以当作参数传给xdef bar(x):    print(x)    x()

bar(func)

3、func还可以当作返回值def bar(x): # x=func    return x #return func

res=bar(func) #res=funcprint(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 requestsimport 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()就可以了

 
 

原文地址:https://www.cnblogs.com/yangli0504/p/8665553.html

时间: 2024-11-12 19:51:02

Python之旅.第三章.函数3.28的相关文章

Python之旅.第三章.函数3.30

一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来 2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置有__iter__方法的对象,都是可迭代的对象num=1 以下都是可迭代的对象str1='hello'list1=[1,2,3]tup1=(1,2,3)dic={'x':1}s1={'a','b','c'}f=open('a.txt','w',encoding='utf-8') 3.迭代器:迭代取

Python编程快速上手-让繁琐工作自动化 第三章 函数习题及其答案

第三章 函数习题及其答案 1.为什么在程序中加入函数会有好处? 答:函数减少了重复的代码.这让程序更短,更容易阅读,更容易修改. 2.函数中的代码何时执行: 在函数被定义时,还是在函数被调用时? 答:函数中的代码在函数被调用时执行,而不是在函数定义时. 3.什么语句创建一个函数? 答:def语句定义了(创建了)一个函数. 4.一个函数和一次函数调用有什么区别? 答:函数包含def语句和在def子句中的代码.函数调用让程序执行转到函数内,函数调用求值为该函数的返回值. 5.Python程序中有多少

Python编程入门-第三章 编写程序 -学习笔记

第三章 编写程序 1.编辑源程序.运行程序 可通过IDLE中File>New File新建一个文本以编辑源程序,编辑完成可通过Run>Run Module(或者F5快捷键)来运行程序.Python源文件都以.py格式存储. 2.从命令行运行程序 除了上述利用IDLE的集成功能运行程序的方式外,当然也可以通过命令行运行程序,命令格式为:python ‘源文件名称.py’. 3.编译源代码 当运行py格式文件时,Python会自动创建相应的.pyc文件,该文件包含编译后的代码即目标代码,目标代码基

Python读书笔记-第三章,四章

第三章 1. 字符串格式化 >>>format="hello %s  %s world" >>>values=('world','hot') >>>print format % values  #也可以接收单个字符串也 也可以用%f %d这类的类似与c的printf 匹配多个参数的时候应该用圆括号 >>>'%s plus %s equals %s'  %(1,1,2) >>>'%010.2f' %

Python学习(第三章)

一. 转义字符 1. \t 使输出垂直方向保持对齐 # \t 在控制台输出一个制表符,是输出垂直方向保持对齐 print("1 2 3") print("10 11 12") print("1\t2\t3") print("10\t11\t12") --------------------------------------------------- 1 2 310 11 121    2    3    10   11  

第三章 函数练习题

文件处理相关 1,编码问题 (1)请问python2与python3中的默认编码是什么? 1 2 python 2.x默认的字符编码是ASCII,默认的文件编码也是ASCII python 3.x默认的字符编码是unicode,默认的文件编码也是utf-8 (2)为什么会出现中文乱码,你能举例说明乱码的情况有哪几种? 1 2 3 4 5 6 7 8 9 无论以什么编码在内存里显示字符,存到硬盘上都是2进制,所以编码不对,程序就会出错了. (ascii编码(美国),GBK编码(中国),shift_

python核心编程-第三章-个人笔记

1.语句和语法 (1)反斜杠"\"表示语句继续.python良好的编程习惯是一行最后不超过80个字符,一行字符过多时便须用到反斜杠换行继续该语句. PS:在使用小括号.中括号.大括号时可以跨行书写,无须反斜杠:三引号的字符串也可以跨行书写 (2)分号";"可以在同一行写多个语句.虽然python支持这么做,但为了代码可读性,一般不建议这么做 2.变量赋值 (1) python中,对象是引用传递的,而不是直接将值赋给对象  如: >>> a = 12

《算法导论》读书笔记--第三章函数的增长 课后题

本章的课后题看一下即可,比较平凡. 3.1渐近记号 引用一下别人的答案,非常感谢: 原文地址:http://www.cnblogs.com/timebug/archive/2010/03/25/1694286.html |概念回顾| 当输入规模大到使只有运行时间的增长量级有关时,就使在研究算法的渐进效率. 几个重要渐进记号的定义: Θ(g(n))={ f(n): 存在正常数c1,c2和n0,使对所有的n>=n0,有0<=c1g(n)<=f(n)<=c2g(n) } O(g(n))=

Python之旅.第五章.面向对象 4.12

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 13.0px "PingFang SC"; color: #000066; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 13.0px Courier; color: #000066; background-co