zoukankan      html  css  js  c++  java
  • python流程控制语句和函数

    一.流程控制语句

    1.判断语句

    if语句

    if 表达式:
      语句块
    

    if...else语句

    if 表达式1:
    	语句块1
    else 表达式2:
    	语句块2
    

    if...elif...else语句(选择语句)

    if 表达式1:
        语句块1
    elif 表达式2:
        语句块2
    elif 表达式3:
        语句块3
    ....
    else:
        语句块n
    

    if嵌套语句

    if 表达式1:
        if 表达式2:
            语句块2
        else:
            语句块3
    

    2.循环语句

    while循环

    while 条件表达式:
        循环体
    

    for 循环

    for 迭代变量 in 对象:
    	循环体
    

    循环嵌套

    while 条件表达式1:
        while 条件表达2:
            循环体2
        循环体1
    
    
    
    for 迭代变量1 in 对象1:
        for  迭代变量2 in 对象2:
            循环体2
        循环体1
    
    
    while 条件表达式:
        for 迭代变量 in 对象:
            循环体2
        循环体1
    

    3.break和continue语句

    break用于跳出当前循环

    while 条件表达式1:
        执行代码
        if 条件表达式2:
            break      #跳出while
    
    for 迭代变量 in 对象:
        if 条件表达式:
            break    #跳出for
    

    continue用于跳出当前循环一次

    while 条件表达式1:
        执行代码
        if 条件表达式2:
            continue
    
    for 迭代变量 in 对象:
        if 条件表达式:
            continue
    

    4.pass语句

    pass语句起到占位的作用

    for i in range(1,10):
        if i%2 = 0:
           print(i)
         else:
            pass
    

    二.函数

    1.创建和调用

    使用关键字def来创建函数

    #创建
    def fun_name([参数]):
        ['''函数注释''']
        函数主体
    #调用 :函数名()
    fun_name([参数])
    

    2.参数那点事

    (1)形参和实参

    形参是在定义函数时,起到占位的参数

    实参是在调用函数时,实际传入到函数体内,参与运算的值。

    (2)传入参数的方式

    位置参数

    位置参数也称为,必备参数,在调用的时候实参传入的顺序,必须和形参的顺序一致。传入实参数量也必须和形参一样。

    #定义
    def fun(a,b):
        print('a等于',a)
        print('b等于',b)
        print('a+b等于',a+b)
    fun(1,2)  #按照形参的顺序传入,a=1,b=2
    '''
    输出
    a等于 1
    b等于 2
    a+b等于 3
    '''
    

    关键字参数

    关键字参数是指使用形参的名字来指定值,不需要顺序一致,参数名正确即可。

    #定义
    def fun(a,b):
        print('a等于',a)
        print('b等于',b)
        print('a+b等于',a+b)
    #调用
     fun(b=6,a=9) #和形参的顺序可以不一样
    '''
    输出
    a等于 9
    b等于 6
    a+b等于 15
    '''
    

    默认参数

    在调用函数的时候,如果没有按照形参传入指定的参数,就会报错,这时,我们可以为函数的参数设置默认的值,当没有参数传入时,默认参数就会传入函数体内,有参数传入的时候,默认参数不会影响程序的输出结果。

    注意:

    默认参数必须是不可变的数据类型。

    demo1

    def demo(a=[]): #形参a的默认值为 空列表,是可变的
        print(a)
        a.append(1)   #在列表末尾添加1
    demo()    #第一次调用列表a,输出 []
    demo()    #第二次调用列表a,输出 [1]
    demo()    #第三次调用列表a,输出 [1, 1]
    #默认参数是可变的,会影响程序的最种输出结果
    

    demo2

    def demo(num=10): 
         print(num)
         num = 1
    
    demo()            #不传入参数,输出为默认值10
    demo(999)         #输出 999
    demo(888)         #输出 888
    demo(777)         #输出 777
    

    (3)可变参数

    可变参数也叫不定长参数,即传入函数的参数可以是多个。

    *parameter形式

    该形式接受所有传入的参数,以元组的形式保存。

    def print_coffe(*coffe_name):
        print(coffe_name)
        for i in coffe_name:
            print(i)
    
    print_coffe('蓝山','卡布奇诺','雀巢')
    '''
    输出
    ('蓝山', '卡布奇诺', '雀巢')
    蓝山
    卡布奇诺
    雀巢
    '''
    
    #如果要传入已经存在的列表或者元组,在列表或元组名字前面加*
    coffe_name = ['蓝山', '卡布奇诺', '雀巢']
    def print_coffe(*coffe_name):
        print(coffe_name)
        for i in coffe_name:
            print(i)
    
    print_coffe(*coffe_name) #输出的结果是一样的
    

    两个*parameter形式

    两个*表示接受任意多个类似关键字参数一样显示赋值的实际参数,直白一点就是通过键值对(字典)的方式。

    def fun (**demo):
        print()
        for key, vlaue in demo.items():
            print("["+ key + "]的年龄是" + vlaue)
    fun(熊大='3岁',熊二='2岁') #前面的键不带引号
    '''
    输出
    [熊大]的年龄是3岁
    [熊二]的年龄是2岁
    '''
    #如果要传入已经存在的字典,则在字典前面加**
    

    3.返回值

    return

    通过return返回想要得到的值,return出现在函数的任何位置,只要得到运行,后面的代码块都会结束执行。

    可以返回一个值或者多个值,中间用逗号隔开,如果返回的是多个值,则保存在元组里面。

    def fun (num1=1,num2=2):
        print('==============')
        return num1,num2
        print('我在return后面,所以我不会被执行')
    
    num = fun()
    print(num)
    """ 
    输出
    ==============
    (1, 2)     
    """
    

    4.变量的作用域

    局部变量

    只在函数内部起作用,函数体执行完毕,就不存在了。

    def fun():
        num = 1
        print(num)
    fun()  #输出1
    print(num) #会报错 NameError: name 'num' is not defined
    

    全局变量

    作用于函数体内外

    num = 1
    def fun():
        print('函数体内'+ str(num))
    fun()
    print('函数体外'+ str(num))
    '''
    输出
    函数体内1
    函数体外1
    '''
    

    注:

    当局部变量与全局变量重名时,对函数体内的变量进行操作,并不会影响与之重名的全局变量。

    str_1 = '我是全局变量'
    def fun():
        str_1= '我是局部变量'
        print(str_1)
    fun()
    print(str_1)
    '''
    我是局部变量
    我是全局变量
    '''
    

    作用域链

    当局部变量与全局变量重名时,函数调用的是靠近该代码块的变量(函数内部的变量更靠近)

    str_1 = '我是全局变量'
    def fun():
        str_1= '我是局部变量'
        print(str_1)
    fun() #输出  :我是局部变量
    

    关键字global

    如果在函数体内定义变量时,使用关键字global,该变量也就会变成全局变量,在函数体外也可以访问该变量。

    def fun():
        global str_1
        str_1= '我是通过关键字global在函数内部定义的全局变量'
        print(str_1)
    fun()      #在函数体内输出:      我是通过关键字global在函数内部定义的全局变量
    print(str_1)        #在函数体外输出 : 我是通过关键字global在函数内部定义的全局变量
    

    也可以通过关键字global更改原有的全局变量

    str='old_str'
    def fun():
        global str
        str = 'new_str'  #替换原来的orl_str
    fun()
    print(str)  #输出  new_str 
    

    5.匿名函数

    使用关键字lamba来定义,匿名函数是没有名字的函数,可以理解为把函数体赋值给一个变量,而不需要添加retrun就可以返回值给变量。

    语法

    fun_name = lambda [arg1[,arg2[...,argn]]]:expression
    # arg : 是可选参数,用于指定要传递的参数列表
    # expression : 必选参数,匿名函数主体
    

    demo

    #定义
    sum = lambda num1,num2:num1+num2
    #调用
    print(sum(1,2))
    
    #等价于
    def fun(num1,num2):
        return num1+num2
    print(fun(1,2))
    
    #同样的都输出3
    

    注:

    在实现一些简单的逻辑运算的时候,使用匿名函数可以简化代码

    匿名函数在调用的时候和普通的函数的时候是一样的。

  • 相关阅读:
    Windows程序设计 读书笔记 对话框。
    Windows程序设计 读书笔记 菜单及其他资源。
    WM_PAINT 和 UpdateWindow
    设备描述表。
    裁解区域
    Windows程序设计 读书笔记 键盘。
    Windows程序设计 读书笔记 鼠标。
    CreateDC,CreateIC,CreateCompatibleDC,CreateMetaFile.
    API原理介绍。
    CString 和 const char* 的相互转化(UNICODE)。
  • 原文地址:https://www.cnblogs.com/lc-snail/p/13185598.html
Copyright © 2011-2022 走看看