Python之函数总计【彩民之家论坛9066777】

2019-10-12 20:09 来源:未知

      b、生成器表明式:类似于列表推导,不过,生成器重返按需发生结果的一个对象,并不是一遍创设三个结果列表**

3)可变长参数:

生成器函数

2)关键字参数:实参在概念时,根据key-values的款型定义

      c、局地功用域:局部名称空间,只可以在局地范围生效

名称空间分为三种:

归来一个值

def func(x,y,**kwargs):
    print(x,y,kwargs)
func(1,y=2,z=3,a=1,b=2)---->1 2 {'z': 3, 'a': 1, 'b': 2}

 可迭代和迭代器的相同点 : 都足以用for循环

3)局地名称空间:定义在函数(或模块、类)内部的名字,唯有在函数(模块、类)调用的时候才生效,调用停止后就能够放出

      a、生成器函数:常规函数定义,但是,使用yield语句并非return语句重临结果。yield语句三回回到三个结出,在每一种结果中间,

1.对此字符串、列表、元组的数据类型,大家能够依赖索引来达成迭代的功能,可是字典、集结这种未有索引的数据类型,就必要别的形式

     c、取值

s='hello'
res=[i.upper() for i in s]
print(res)          #['H', 'E', 'L', 'L', 'O']

     b、二种命名空间的顺序:内置命名空间>全局命名空间>局地命名空间

def foo():
    print('starting')
    while True:
        x=yield #默认就是yield None
        print('value :',x)

g=foo() 
next(g)  #初始化,等同于g.send(None)
g.send(2)  

一、函数

  值平日转移的情状,常常定义成职分参数,不过值在许多情景下不改变的情景下,能够定义成暗许参数

    a、参数----站在概念函数的角度

g.send(2)的操作实际是先把2传值给yield,再由yield传值给x,send()既有传值的效果,又有next()的效能

def eee(*args,**kwargs):
    print(args,kwargs)

 eee(12,123)

三、名称空间和成效域

n*n

  foo(x=1,y=2)

生成器函数

def max2(x,y):
    if x > y:
        return x
    else:
        return y
def max4(a,b,c,d):
    res1=max2(a,b) #23
    res2=max2(res1,c) #23
    res3=max2(res2,d) #31
    return res3

print(max4(11,23,-7,31))
 

2.Python为了提供一种不依赖索引的迭代情势,为部分指标放置了__iter__方法,obj.__iter__()得到的结果就是迭代器

          2、在大局调用:全局命名空间->内置命名空间

1)地点参数:依据从左到右的相继依次定义的参数 def foo(x,y,z)

            2、包:包罗对外表函数的作用域中变量的引用

在Windows命令提醒行中输入指令:import this ,在终极一行拜访到那般一句话:

彩民之家论坛9066777 1彩民之家论坛9066777 2

  a.提供了一种不信赖索引的取值情势

         2、默许参数

2.实参

i = abs(-123)  

print(123)

函数的独到之处:1.代码录取

x = 1
def f(x):
    print(x)

print(10)

取值顺序是:局地名称空间-->全局名称空间-->内置名称空间

三级菜单

2)默许参数:在函数定义阶段就早就为形参赋值,调用阶段不赋值也是有默认值 def foo(x,y=10)

     a、暗许参数能够不传值

参数的定义顺序:x,y=1,*args,z,**kwargs,分别是岗位参数,暗中同意参数,可变长地方参数,命名主要字参数,可变类型参数

      a、但愿这几个数据类型里的事物也得以选用for被贰个贰个的抽出来,那我们就非得满意for的供给

但供给静心的是,这个参数并不会相同的时候全部并发

     a、 无名氏函数 轻巧的急需用函数去化解的难点 佚名函数的函数体 唯有一行,也叫lambda

4.装饰器语法:在棉被服装饰对象的正上方的独自一行,写上@装饰器名字

   h、max()最大数 min()  最小数

5.生成器的表明式方式

19、迭代器合同

函数的概念:

20、判定迭代器和可迭代的秘诀 

      2.保险一致性,易于维护

1、为啥要用函数

res= x if x>y else y----->度量尺度x>y是或不是为真,为真则把x赋给res,不然把y赋给res

       2、重返三个值

 1 #模拟linux中tail -f a.txt|grep 'error' |grep '404'的功能
 2 import time
 3 def tail(filepath,encoding='utf-8'):
 4     with open(filepath,encoding='utf-8') as f:
 5         f.seek(0,2)  #以末尾为开始位,第0个
 6         while True:
 7             line=f.readline()
 8             if line:
 9                 yield line
10             else:
11                 time.sleep(0.5)
12 
13 def grep(lines,pattern):
14     for line in lines:
15         if pattern in line:
16             # print(line)
17             yield line
18 
19 g1=tail('a.txt')
20 g2=grep(g1,'error')
21 g3=grep(g2,'404')
22 
23 for i in g3:
24     print(i)

17、可迭代

潜心:1.函数必须先定义,在选择,和变量类似,在概念前使用会报错

 

1)内置名称空间:Python自带的,如print,int,len....当Python解释器运行的时候,就能够转移内置名称空间

add2 = lambda x,y : x y
ret = add2(1,2)
print(ret)

名称空间寄存名字和值的绑定关系,以key-value 的格局

ret = filter(lambda x: x >22, [11,22,33,44])  

for i in ret:  

    print(i)

1.生成器函数:函数体内蕴含有yield关键字,该函数的试行结果就是生成器

13、闭包

四、函数嵌套和功用域

    a、重临值为None

5.for循环实在会暗中同意调用.__iter__方法

     d、递归实例

  地方形参必须被传值,且多七个少三个都不行

     a、命名空间分为三种

x=1
def foo():
    x=10
    print(x)        

foo()       #10
print(x)    #1

x=1
def foo():
    global x
    x=10
    print(x)

foo()       #10
print(x)    #10

def foo():
    x=1
    def f2():
        x =x
        return x
    return f2()

print(foo())        #会报错UnboundLocalError: local variable 'x' referenced before assignment

def foo():
    x=1
    def f2():
        nonlocal x  #告诉Python解释器,这里的x不是局部变量,只会找函数内部的,不会修改全局变量
        x =x
        return x
    return f2()

print(foo())    #会打印出修改后的x的值,2

23、递归函数

6.棉被服装饰函数有参数的景况:写成(*args,**kwargs)的形式

12、作用域

生成器表明式模式利用示范

      b、登陆认证

  b.叁次 性的,取值只好以后走,无法往前退

       a、第一种:判别当中是或不是落到实处了 __next__** **

1.形参

只写return

1.开花密封原则:对扩张是开放的,对修改是查封的

              b、**kwargs

  def 内部函数名():

彩民之家论坛9066777 3彩民之家论坛9066777 4

五、闭包函数

 

  按职责定义的可变长参数用*表示

9、私下认可参数

1)全局效能域:内置名称空间与大局名称空间的名字属于全局范围,在漫天文件的随飞机地方置都能引用

     b、 函数名 = lambda 参数 :返回值

注意:

动态,先按岗位参数,再按首要性字参数

View Code

def timer(func):
    def inner(*args,**kwargs):
        '''执行函数之前要做的'''
        re = func(*args,**kwargs)
        '''执行函数之后要做的'''
        return re
    return inner

2)局地功能域:属于某个范围,只在函数内部可以被援用,局地有效

算年龄

自然要注意局部变量和全局变量的效果与利益范围,在有的修改全局变量会出错,在大局范围援引局地变量也会出错

14、函数值装饰器

def func(x,y,*args):
    print(x,y,args)
func(1,2,3,4,5)  --->1 2 (3 4 5)

  l、、open---打开,关闭,close

闭包函数最基本的花样:

彩民之家论坛9066777 5

def wrapper(*args,**kwargs):还不错任意方式,任性长度的参数

      a、计算func的实践时间

print(isinstance(str1,Iterator)) --->判定是不是为迭代器

              a、*args

闭包函数的天性:a.自带成效域,b.延迟总结(f只是获得了函数的内部存款和储蓄器地址,什么日期用,加括号就足以运作)

列表推到:

View Code

    b、再次回到要重临的值

概念在函数内部的函数,该内部函数包蕴对表面功效域,而非全局效能域的名字的引用,那么该内部函数称为闭包函数

 可迭代和迭代器的差异点 : 迭代器多完毕了三个__next__方法

3.迭代器的长处:

def hei():
    x = 20
    def inner():
        print(x)  #局部的
    return inner

i = hei()
i()  #全局

#遇到*即使地点参数,把*末尾的满贯拆开,再一一相称,多余的就以元组的花样寄存到一齐

彩民之家论坛9066777 6彩民之家论坛9066777 7

  b.惰性总括,节外省部存款和储蓄器

    a、isinstance  判定变量的数据类型

    None

li = [11,22,123,1]  

r = max(li)  

print(r)  

a = min(li)  

print(a) 

彩民之家论坛9066777 8彩民之家论坛9066777 9

         2、依照着重字传参

2.生成器实际正是迭代器的一种

 

3.yield的功能:

l =[i*i for i in range(100)]
print(l)

  关键字参数能够不要向地点参数同样与形参一一对应,能够打破顺序限制

      b、装饰器的作用:正是在不转移原函数调用方式的情况下,在这里个函数的内外加上扩大功效

彩民之家论坛9066777 10彩民之家论坛9066777 11

    b、提升代码的可读性

def 函数名(参数1,参数2....):

   

八、生成器函数(语句格局和表达式情势)

return None

   3.函数的再次来到值能够是随意档期的顺序,如果是重临七个值,一定是元组格局

     a、实参:调用函数的时候传出的参数

    引用外界变量

   f、filter (过滤)

   b.不只能够是岗位实参格局,也得以是生死攸关字实参格局,可是三个形参只好传值三遍

3、return的作用:

函数嵌套定义:

      b、  全局功能域:包蕴内置名称空间、全局名称空间,在全路文件的大三人置都能被援用、全局有效

函数的参数分为方式参数和实际参数,在函数定义的时候,函数名前面括号里的正是样式参数,在函数调用的时候,传递的参数是事实上参数。形式参数只在函数内部有效,外界不也许引用。

彩民之家论坛9066777 12彩民之家论坛9066777 13

 1 def init(func):
 2     def wrapper(*args,**kwargs):
 3         g=func(*args,**kwargs)
 4         next(g)
 5         return g
 6     return wrapper
 7 @init
 8 def eater(name):
 9     print('%s ready to eat' %name)
10     food_list=[]
11     while True:
12         food=yield food_list#return None
13         food_list.append(food)
14         print('%s start to eat %s' %(name,food))
15 
16 
17 e=eater('alex')
18 print(e.send('狗屎'))
19 print(e.send('猫屎'))
20 print(e.send('alex屎'))
21 
22 
23 def make_shit(people,n):
24     for i in range(n):
25         people.send('shit%s' %i)
26 
27 e=eater('alex')
28 make_shit(e,5)
29 #from egon
30 #egon老师的例子有味道,但是我又忍不住不用这个

  g、map  无论是map照旧filter,获得的结果都是可迭代的指标,迭代器的实例

def 外界函数名():

 

  按首要性字定义的可变类型的参数用**表示  

            2、局部命名空间

1.函数嵌套满含函数的嵌套调用和函数的嵌套定义

7、参数分为形参和实参   

函数是逻辑结构化和进度化的一种编制程序方法,通过二个函数名封装好一串用来达成某一一定作用的代码

彩民之家论坛9066777 14彩民之家论坛9066777 15

   2.函数在概念阶段只检查评定语法错误,不会实践代码,所以尽管在函数体内有未定义的变量名,在函数未调用前也不会报错

5、函数的调用----接受再次来到值

函数嵌套调用能够用求最大值的事例来验证:

     a、地点参数必需传值

2.装饰器本质是专擅可调用的对象,棉被服装饰对象也是不管三七二十一可调用的指标

a = 10 / 3  

print(a)  

r = divmod(10,3)  

print(r)  

结果:  

3.33333335  

(3,1) 

二、函数参数

彩民之家论坛9066777 16彩民之家论坛9066777 17

#遇到**不怕重点字参数,把**末尾的方方面面拆成主要字,再一一相称,多余的以字典情势寄存到联合

         1、地方参数

-->  egon is a good man

       a、闭包分为:

#为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
db_dic={
    'egon':'123',
    'alex':'alex3714',
    'yuanhao':'smallb'
}


db_path=r'C:untitled\0615Python第8天db_dic.txt'

with open(db_path,'w',encoding='utf-8') as f:
    f.write(str(db_dic))

login_dic={
    'user':None,
    'status':False,
}

def auth(func):
    def wrapper(*args,**kwargs):

        #加一个验证状态的字典,如果已经登录成功,下次使用就不用重新验证
        if login_dic['user'] and login_dic['status']:
            res=func(*args,**kwargs)
            return res
        else:
            name=input('name:')
            password=input('password:')
            with open(db_path, 'r', encoding='utf-8') as f:
                auth_dic = eval(f.read())
            if name in auth_dic and password==auth_dic[name]:
                print('login ok')
                login_dic['user']=name
                login_dic['status']=True
                res=func(*args,**kwargs)
                return res
            else:
                print('error')
    return wrapper

@auth
def index():
    print('welcom to the page')

@auth
def home(name):
    print('welcom  to %s's home page'%name)


index()
home('egon')

         3、动态参数

*  a.与return类似,都得以重返值,但不均等的地点在于yield重返多次值,而return只可以回去三遍值
  b.为函数封装好了__iter__和__next__办法,把函数的实践结果做成了迭代器
  c.服从迭代器的取值格局obj.__next__(),触发的函数的执行,函数暂停与再持续的景色都以由yield保存的
4.生成器话语形式利用实例*

平常:

然而只要必须求在有的修改全局变量,也是用艺术的,就是在要修改的变量前加三个global

     b、参数----站在调用函数的角度上

3.装饰器的作用是:在不更动棉被服装饰对象源代码及调用形式的前提下,为其增添新的功效

from collections import Iterable  #可迭代
from collections import Iterator  #迭代器
isinstance(o,Iterable)
isinstance(o,Iterator)

6.判断是或不是是可迭代对象和迭代器,能够用命令

    b、重回值不为None

2.作用域

    a、防止代码重用

  a.取值比不上依照索引取值方便

    d、divmod  除商得余数---比方分页

  return 内部函数名

 

  函数体 

          挂起函数的景况,以便下一次重它离开的地方继续推行

print(isinstance(str1,Iterable)) --->决断是不是为可迭代对象

               a、用三个变量接受,接受的结果是二个元祖

b.默许参数日常定义成不可变类型

            1、闭:内部函数

  大家得以用一段代码来贯彻大家须要的职能,不过当大家要求重复使用这段代码时,复制粘贴实际不是八个酷的不二等秘书诀,我们能够用到函数来达成这一急需

      b、可迭代左券——凡是可迭代的内部都有多个__iter__方法

1)地点实参:与职责形参一一对应

     c、参数能够有多少个,用逗号隔绝,无名函数不管逻辑多复杂,只好写一行,且逻辑推行完成后的内容正是重回值。重返值和常规的函数一样能够是轻巧数据类型

  def foo(x,y)

4、再次回到值的二种情况

c.暗中同意参数只在概念时被赋值三遍

   

一、函数定义

def ccc(*args):#1,2,3,4,5
    print(args)

ccc(1,2,3,4,5)#按位置传参数

t = (1,2,3,4,5)
ccc(t)  ((1, 2, 3, 4, 5),)
ccc(*t)  (1, 2, 3, 4, 5)
复制代码

5.有多个装饰器的时候,每行二个,执行时从上往下运转

彩民之家论坛9066777 18彩民之家论坛9066777 19

装饰器示例一:

    b、lambda用法:

      3.可扩大性好

动态参数

  Namespaces are one honking great idea -- let's do more of those!

li1 = [11,22,33,44]  

li2 =["a",'VV',"c","E"]  

r = zip(li1,li2)  

print(r)  

for i in r :  

    print(i)

a.私下认可参数必须放在地点参数后面

     c、最大层数限制是python暗中同意的,能够做修改,不过不建议您改改

  c.不能获取迭代器的长短

彩民之家论坛9066777 20彩民之家论坛9066777 21

六、装饰器

   a、重临值为None    不接受

  ''注释''

       b、第二种

def f1():
    def f2():
        def f3():
            print('from f3')
        print('from f2')
        f3()
    print('from f1')
    f2()
# print(f1)
f1()

            1、全局命名空间

4.迭代器的短处:

def aaa(a,b):
    print(a,b)
aaa(1,2)

只顾:a.地方参数和第一字参数混合使用的时候,地方参数务必在第一字参数前边

21、生成器

十、列表分析

         1、依据岗位传参

将yield赋值给一个变量如x=yield,然后用send()传值,但注意要先做三个临近初叶化的操作

装饰器的原则特性局

3)命名第一字参数:def register(*,name,age) *前边定义的形参,必需被传值,且必须以首要字的方式传值

def age(n):
    if n == 1:
        return 40
    else:
        ret = age(n-1)
        return ret   2
age(5)

功用域在函数定义时就早就固定了,不会因调用地方而更改

   关键字:return

加载顺序是:内置名称空间-->全局名称空间-->局地名称空间

2、函数的调用

2)全局名称空间:文件等第定义的名字会贮存到全局名称空间,实行Python程序的时候产生,轻便点说尽管未有缩进的变量名

彩民之家论坛9066777 22彩民之家论坛9066777 23

   4.return 的效果与利益是结束函数的实践,return只实行一遍,前面的剧情不施行

带参数的装饰器

  内部函数须要的变量

      c、可迭代对应标识:__iter__

九、安慕希表明式

                           '__next__'Python之函数总计【彩民之家论坛9066777】。 in Python之函数总计【彩民之家论坛9066777】。dir(o)

七、迭代器

temp = "asdfsdfs"  

r = isinstance(temp, list)  

print(r)

收获的迭代器既有.__iter__方法,又有.__next__方法

   k、zip ---意思正是取多少个变量中索引绝对应的值

def func1():  #定义函数
    print('this is a function')  #函数体
func1()  #调用函数

#通常无参函数不需要返回值,有参函数需要有返回值
def func1(name):  #带参数的形式
    print('%s is a good man'%name)
func1('egon')

#关于函数的返回值,如果没有指定,默认是None
#函数与过程的定义就是过程没有返回值,用完之后就没有了,而函数有返回值
def func1(name):
    print('%s is a good man'%name)
print(func1('egon')) 

彩民之家论坛9066777 24彩民之家论坛9066777 25

#实现缓存网页内容的功能,下载的页面存放于文件中,如果文件内有值(文件大小不为0),
# 就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
from urllib.request import urlopen
import os

cache_path=r'C:untitled\0615Python第8天cache_file.txt'
def make_cache(func):
    def wrapper (*args,**kwargs):
        if os.path.getsize(cache_path):
            #有缓存
            print('\033[45m========>有缓存\033[0m')
            with open(cache_path,'rb') as f:
                res=f.read()
        else:
            res=func(*args,**kwargs)#下载
            with open(cache_path,'wb') as f:#制作缓存
                f.write(res)
        return res
    return wrapper


@make_cache

def get(url):
    return urlopen(url).read()


print(get('https://www.python.org'))

 

name='egon'
def func():
    name='alex'
    def bar():
        print(name)
    return bar

f=func()        #f就是闭包函数
print(f.__closure__[0].cell_contents)       #该命令可以查看闭包函数外面包了什么东西------>alex
def f1(x):  

    if x % 2 == 1:  

       return x   100  

    else:  

       return x  

ret = map(f1, [1,2,3,4,5])  

ret2 = map(lambda x: x   100if x % 2 == 1 else x ,[1,2,3,4,5])  

print(ret)  

for i in ret :  

    print(i) 

装饰器示例二:

 

          2、重回多少个值

def func():
    print('aaaa')
    a = 1
    yield a    #返回第一个值
    print('bbbb')
    yield 12   #返回第二个值
ret = func()  #拿到一个生成器
print(ret)
print(next(ret)) #取第一个值
print(next(ret)) #取第二个值
print(next(ret)) #取第三个值 会报错 因为没有第三个值

   函数定义---重回值

            3、内置命名空间

彩民之家论坛9066777 26彩民之家论坛9066777 27

           1、在某些调用:局地命名空间->全局命名空间->内置命名空间

私下认可参数

      a、字符串,列表,集结,字典,元祖那个度能够for循环,说明他俩是可迭代的

逐一:地方参数、*args、私下认可参数、**kwargs

      a、装饰器的本来面目:闭包函数

6、参数

def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length 1
    print(length)


str_len = mylen()
print(str_len)

      a、迭代器合同 : 中间贯彻了__iter__ __next__方法

      a、  效用域便是功力范围,遵照生效范围可以分成全局效能域和某个成效域。

彩民之家论坛9066777 28彩民之家论坛9066777 29

22、列表推导式

   返回值=函数名(参数1,参数2)

彩民之家论坛9066777 30彩民之家论坛9066777 31

   g、pow(x,y) ----就是求x的y次方

         3、动态传参*tup,**dic

作用域:
小范围的可以用大范围的
但是大范围的不能用小范围的
范围从大到小(图)
在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的
如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。
如果都没有,报错
ret = eval("1   3")  

print(ret)  

结果:4 

彩民之家论坛9066777 32彩民之家论坛9066777 33

不写return

      a、对扩充是开放的

24、无名氏函数

闭包常用格局

18、迭代商业事务

   e、eval  -----强制不更动输入类型的格式

i = pow(2,100)  

print(i) 

n*n

       b、闭包常用的的款式

25、内置函数

彩民之家论坛9066777 34彩民之家论坛9066777 35

       

      b、迭代便是:将有个别数据集内的数据贰个挨三个的收取来,就 叫做可迭代

模式    描述
r      打开一个文件为只读。文件指针被放置在文件的开头。这是默认模式。
rb     打开一个文件只能以二进制格式读取。文件指针被放置在文件的开头。这是默认模式。
r      打开用于读和写文件。文件指针置于该文件的开头。
rb     打开用于读取和写入二进制格式的文件。文件指针置于该文件的开头。
w      打开一个文件只写。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
wb     打开一个文件只能以二进制格式写入。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
w      打开文件为写入和读取模式。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
wb     打开用于以二进制格式写入和读出文件。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
a      打开用于追加的文件。文件指针是在文件是否存在该文件的末尾。也就是说,该文件是在追加模式。如果该文件不存在,它会创建一个用于写入的新文件。
ab     打开文件用于二进制格式追加。文件指针是在文件是否存在该文件的末尾。也就是说,文件是在追加模式。 如果该文件不存在,它会创建一个用于写入的新文件。
a      打开文件为追加和读取方式。文件指针是在文件是否存在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建用于读写操作的新文件。
ab     打开一个文件以附加和二进制格式读取模式。如果该文件存在文件指针在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建读写操作的新文件。
def ddd(**kwargs):
    print(kwargs)

 ddd(k = 'a',j = 'b')#按关键字传参数

         1、重回三个值

def ret():
    print(111)
    return None
    print(222)

re = ret()
print(re)
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

def threeLM(menu):
    for key in menu:
        print(key)
    k = input(">>>")
    if k in menu:
        threeLM(menu[k])

threeLM(menu)

        

View Code

       1、重返二个值

彩民之家论坛9066777 36彩民之家论坛9066777 37

11、命名空间

def bbb(x=10):
    print(x)
 bbb()     #x = 10
 bbb(20)  #x = 20

10、动态参数

l = [1,2,3,4]
print(list(map(lambda x:x*x , l)))

递归三级菜单

for i in range(100):
    print(i*i)

彩民之家论坛9066777 38彩民之家论坛9066777 39

 

Python之函数总计【彩民之家论坛9066777】。动态参数 关键字参数

View Code

16、装饰器应用场景

x = 1
def f(x):
    print(x)

f(10)
print(x)
def f1():  

    return 123  

f2 = lambda :123  

r1 = f1()  

r2 = f2()  

print(r1,r2)

def f3(a1,a2):  

    return a1   a2  

f4 = lambda a1,a2: a1   a2  

r3 = f3(1,2)  

r4 = f4(3,4)  

print(r3,r4) 
def ret():
    print(111)
    return
    print(222)

re = ret()
print(re)

彩民之家论坛9066777 40彩民之家论坛9066777 41

     a、在一个函数里调用自身

def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length 1
    return length

str_len = mylen()
print(str_len)

     b、Python递归最大层数限制997

彩民之家论坛9066777 42彩民之家论坛9066777 43

View Code

      b、对修改是查封的

View Code

 

               用多少个变量接受

 

    c、abs--取相对值

15、装饰器的开放密闭原则:

8、地点参数

 

def timer(func):
    def inner(a):
        start = time.time()
        func(a)
        print(time.time() - start)
    return inner

@timer
def func1(a):
    print(a)

func1(1)

   b、重临值不为None

     e、递归结束标识:return

职位参数

彩民之家论坛9066777 44彩民之家论坛9066777 45

    a、截至函数的执行

               b、有微微个重临值就用略带个值接受

彩民之家论坛9066777 46彩民之家论坛9066777 47

版权声明:本文由彩民之家高手论坛发布于编程技术,转载请注明出处:Python之函数总计【彩民之家论坛9066777】