08-for循环、函数及参数

循环

for...in...循环

语法:for 变量 in 容器: for循环也可以称之为遍历

str = "这周末母亲节别再问你妈需要什么了,她可能需要的是像我这样的女婿"
for var in str:
    print(var)

# for循环列表
list1 = ["鲁智深","孙悟空","唐僧","沙和尚","八戒"]
for var in list1:
    print(var)

# for循环元组
tuple1 = ("鲁智深","孙悟空","唐僧","沙和尚","八戒")
for var in tuple1:
    print(var)

# for循环集合
set1 = {"鲁智深","孙悟空","唐僧","沙和尚","八戒"}
for var in tuple1:
    print(var)

# for循环字典
dict = {"斗战胜佛":"孙悟空","净坛使者":"八戒","金身罗汉":"沙和尚","功德佛":"唐僧"}
for key in dict:
    print(key)

for value in dict:
    print(dict[value])

for value in dict.values():
    print(value)

for key,value in dict.items():
    print(key,value)

# 二级嵌套的循环
list1 = [
    ["a","b","c"],
    ["1","2","3"],
    ["A","B","C"]
        ]
for a,b,c in list1:
    print(a,b,c)


tuple1 = (
    ("a","b","c"),
    ("1","2","3"),
    ("A","B","C")
        )
for a,b,c in tuple1:
    print(a)
    
for var in tuple1:
    print(var)

for var in range(100):
    if var == 33:
        pass
    elif var == 55:
        pass
    elif var == 77:
        pass
    else:
        print(var)

函数

语法

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

​ 功能语句

​ return 表达式

函数名(参数1,参数2,参数3...参数n)

  • def 这个是定义函数的关键字,当Python检测到你的代码里边有def这三个字母,那么Python就认为你要定义函数
  • 函数名:要遵循变量的定义规则
  • ():括号是用来传递参数的,括号内的参数必须用逗号分开,在定义函数的时候传递的参数叫做形式参数(形参),调用函数时传递的参数是实际参数(实参)
  • 功能语句:需要函数打包的功能
  • return:返回值,返回给函数调用者的值,如果没有返回值,函数无意义
  • 表达式:返回给函数调用者的信息, 表达式可以为空,如果为空,默认返回一个None
  • 函数调用:函数名(),注意:括号不要丢掉,不带括号表示函数对象
def name():
    print("周瑜打黄盖,看谁跑得快!") 
name()

# 函数的执行顺序,当不调用函数时不会执行,当调用时按内部代码顺序执行
def foo():
    m = 1
    def foo1():
        m = 2
        print(m)
    print(m)
    foo1()
    print(m)
foo()

def mut99():
    #打印九九乘法表
    i = 1
    while i < 10:
        j = 1
        while j <= i:
            print("%sx%s=%s"%(i,j,i*j),end=" ")
            j += 1
        print()
        i += 1
# 调用函数
mut99()

# 我们在定义函数的时候传递的参数叫做形参
def name(user):
    print("hello ",user)
name("jack")
# 在调用函数的时候传递的参数叫做实参
name("rose")
  • 多个参数:
    • 位置参数:我们传递的实参是和形参一一对应关系
    • 关键字参数:我们传递的实参如果和形参顺序不一致,那么我们的实参需要添加关键字来调整形参的值的顺序
    • 默认值参数:我们在定义函数的时候可以给形参一个默认值,但是,默认值参数必须放到参数列表的最后,如果带默认值的参数在函数调用的时候又一次被赋值,那么就会覆盖掉默认值参数的值
def name(f_name, l_name="rose"):
    print(f_name + " " + l_name)
name("ada")

def operation(a,b,c,d):
    sum1 = a+b+c+d
    return sum1
op = operation(1,2,3,4)
print(op)

全局变量和局部变量

  • global 关键字
    • global 关键字后面的变量会被提升为全局变量
    • 函数内的局部变量无法在函数外单独调用
A = "我是全局变量A"
def name():
    global B
    B = "我是局部变量B"
    print(A)
    print(B)
name()
print(A)
print(B)

A = "我是全局变量A"
def name():
    A = "我是局部变量A"
    print(A)
name()

不定长参数

  • 普通参数:
    • 可以接收关键字
    • 顺序是一一对应的
    • 带默认值的参数要放到最后
def operation(a,b,c,d,e):
    sum1 = a + b + c + d + e
    return sum1
op = operation(1,2,3,4,5)
print(op)
  • 不定长参数:
    • 可以接收多个没人接收的参数
    • 不能接收关键字参数
    • 以元组的形式接收
# 不定长参数(参数收集)
def operation(*args):
    sum1 = 0
    for var in args:
        sum1 += var
    return sum1
op = operation(1,2,3,4,5,6,7,8,9)
print(op)

# *args   垃圾回收站  不能接收关键字参数
# def operation(a,b,c,d,*args):
#     print(a)
#     print(b)
#     print(c)
#     print(d)
#     print(args)
# operation(1,2,3,4,5,6,7,8,9)
  • 不定长关键字参数:
    • 可以接受关键字参数,以字典的形式接收
    • 注意:三种参数尽量避免一起使用
# 接收不定长关键字参数
def operation(**kwargs):
    print(kwargs)
operation(a=1,b=2,c=3)

# 传递参数顺序:普通参数,不定长参数,不定长关键字参数
def operation(A,B,C,D,*args,**kwargs):
    print(A,B,C,D)
    print(args)
    print(kwargs)
operation(1,2,3,4,5,6,7,a=1,b=2,c=3)

list1 = ["1","2","3","4","5"]
for i in list1:
    for j in list1:
        for k in list1:
            if i != j and i != k and j != k:
                print(i+j+k)

函数嵌套和闭包

  • 闭包:内部函数使用外部函数的局部变量,那么我们就称内部函数为闭包
  • 闭包就是调用一个函数,它返回了另一个函数给你 那么返回的这个函数就叫做闭包
def outer(num):
    def inner(val):
        return num + val
    return inner
res = outer(10)  #outer(10) ===> inner   res = inner
result = res(10)   #res(10) == inner(10)
print(result)

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

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,729评论 2 9
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,521评论 0 5
  • 每一对情侣都想在一条河流上航行的两艘小舟。我们航行的长度和速度,在什么位置停留和沉没,我们自己都犹未可知,小舟在一...
    爱上苏打水阅读 218评论 0 0
  • 爱情,大多发生在少男少女之间——因为人成长后,到了社会上,经过耳濡目染,会现实很多,最终,大部分人在二十刚出头的时...
    锡安之光阅读 338评论 0 0
  • 大一第一个寒假,为了省钱,跟着一大帮宁夏的老乡,从厦门一路辗转3站回家。 途中在福州留宿一晚,另几个女生合住一间屋...
    小努力粑粑阅读 185评论 0 0