Python学习 函数 闭包 递归 4.6

一、回顾

序列类型: 字符串、列表、元组

散列类型:字典、集合

可变对象:列表、字典、集合

不可变类型:字符串、元组、

二、函数定义和调用

#def是函数定义关键字

#isPhone是函数名(可自定义)

#括号里是参数

#函数调用:函数名(参数值)

def isPhone(phone):

    if phone.isdigit()  and  len(phone)==11:

        print(“是一个手机号”)

    else:

        print(“不是一个手机号”)


#返回值  return

#当不存在返回值时候,默认返回None

#当存在返回值时候,返回值是具体数据

def func(x,y):

    print(x)

    print(y)

    return x+y

    print(111)    #函数体内return后的代码都不会执行

res = func(1,2)      #res得到返回出去的结果(x+y)

#func函数名,代表的函数本身

#func(1,2)代表函数调用,也就是函数执行之后的结果

三、函数参数

#函数参数,参数没有数据类型限制

#必备参数(x,y),定义了几个参数,函数调用就需要传几个参数值,不能多,不能少

def func(x,y):

    print(x)

    print(y)

#默认参数(y),当不给默认参数传值,会把默认值给参数接收

def func(x,y = 2):

    print(x)

    print(y)

# 不定长参数()

# args是不定长参数,数据放在元组里

# kwargs也是不定长参数,数据放在字典里,键值只能是字符串类型

#args和kwargs都不是规定写法,但是这是规范写法

def  func(x,y=2,*args,**kwargs):

        print(x)

        print(y)

        print(args)

        print(kwargs)


#->str 这种语法指明这个函数的返回值是什么数据类型

def  func(x,y=2,*args,**kwargs)->str:

print(x)

        print(y)

        print(args)

        print(kwargs)

        return  ‘abc’

#拆包

def  func(x,y=2,*args,**kwargs):

        print(x)

        print(y)

        print(args)

        print(kwargs)

四、函数的作用域

x = 100

def  func():

    #在函数里面对外部定义的x进行修改

    x = x + 1

    print(x)

例:

x=100

def  func():

    x=200

    print(x)

print(x)

func()

print(x)

>>>100

>>>200

>>>100

#声明全局变量

x=100

def  func():

        global  x

        x=200

        print(x)

print(x)            #100 

func()                #200

print(x)                #200

#声明局部变量

def  func():

    x=200

    def  func1():

            nonlocal  x    #声明局部变量

            x = x + 1

            print(x)

    print(x)

五、闭包

def    func():

        lv = 5

        #增加血量

        def  func1():

                nonlocal  lv

                lv += 1

                print(lv)

        #增加血量

        def  func2():

                nonlocal  lv

                lv -= 1

                print(lv)

            #外层函数返回内层函数体,这就是闭包

          return  func1,func2

jia,jian = func()

六、递归函数和匿名函数

#递归函数:自身调用自身

def    func(n):
            if  n==1:

                return  1

            else:

                return  func(n-1)*n

#匿名函数:通过lambda关键字定义

#匿名函数会自动返回,x是参数

a = lambda  x :x + 1

#相当于有名函数

def  a(x):

        return    x+1

li = [1,2,4,5,6,7]

def  func(x):

        if    x>5:

                return x

#filter():过滤器

#第一个参数是函数体,第二个参数是可迭代对象

print(filter(func,li))

print(list(filter(lambda x:x>5,li)))

#map():对于元素进行统一操作

#第一个参数是函数体,后面可以是一个或者多个可迭代对象

li = [2,4,6,8,10]

print(list(map(lambda  x:x-1,li)))

#zip():把两个可迭代对象合成一个字典,实现数据配对

tu = (‘a’,‘b’,‘c’)

li = [2,4,6]

print(dict(zip(tu,li)))

#回调函数:把一个函数的函数体传递给另外的一个函数使用

def    func1(f):

        print(111)

def    func2():

        print(222)

func1(func2)

>>>111

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • 1.闭包函数 # 闭包函数 = 函数嵌套定义+函数对象+名称空间与作用域 # 闭包函数 # 1.闭:指的是该函数是...
    二十世纪_梨阅读 185评论 0 0
  • """ # ##列表的相关操作 #(1)列表的拼接 listvar1=[1,2,3] listvar2=[4,5,...
    BlackPriest阅读 284评论 0 0
  • def 定义函数关键字 func是函数名 print()是函数体 1.def fanc():——#定义函数prin...
    进步小小青年阅读 537评论 0 0
  • Python之函数 什么是函数函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。 为什么要用函数函数...
    免跪姓黄阅读 222评论 0 4
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,753评论 0 8