zoukankan      html  css  js  c++  java
  • python.day.07——函数式编程

    一、嵌套循环

    #99乘法表
    for x in range(1, 10):
        for y in range(1,x+1):
            print("%s*%s=%s"%(x,y,x*y), end='') #遍历完一次,不换行输出
        print("
    ")
    
    控制台输出结果;
    1*1=1
    
    2*1=22*2=4
    
    3*1=33*2=63*3=9
    
    4*1=44*2=84*3=124*4=16
    
    5*1=55*2=105*3=155*4=205*5=25
    
    6*1=66*2=126*3=186*4=246*5=306*6=36
    
    7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
    
    8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
    
    9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

    二、函数

    • def  关键字 函数名/方法名():
    • 函数名的要求:见名知意,小写字母  print_str()
    • 写代码  这个函数要实现的功能一
    • 个性化定制, 输入参数,逆函数在定义有几个参数,那么输入几个参数
    • 参数:位置参数、默认参数必须放在位置参数的后面
    #完成任意整数序列的累加
    def sum(i,j):  #位置参数
        mun = 0
        for L1 in range(i, j):
            mun += L1
            t1_01 = mun
        print("新手题题1结果:%s" % t1_01)
    
    x = 1
    y = 101
    sum(x, y)   #传递的参数        
       
    #第一种:报错(“默认参数”放在“位置参数”前)
    def sum(i=10,j):
        mun = 0
        for L1 in range(i, j):
            mun += L1
            t1_01 = mun
        print("新手题题1结果:%s" % t1_01)
    
    x = 1
    y = 101
    
    控制台打印结果:
      File "D:/python/day_04/tast/functions.py", line 3
        def sum(i=10,j):
               ^
    SyntaxError: non-default argument follows default argument
    #第二种:成功(“默认参数”放在“位置参数”后)
    def sum(i,j=101):
        mun = 0
        for L1 in range(i, j):
            mun += L1
            t1_01 = mun
        print("新手题题1结果:%s" % t1_01)
    
    x = 1
    y = 101
    sum(x)
    
    控制台打印结果:
    新手题题1结果:5050
    #第二种:成功(“位置参数”的优先级比“默认参数”高)
    def sum(i=1,j=101):
        mun = 0
        for L1 in range(i, j):
            mun += L1
            t1_01 = mun
        print("新手题题1结果:%s" % t1_01)
    
    x = 2
    y = 11
    sum(x,y)
    
    控制台打印结果:
    新手题题1结果:54

    三、返回值 return

    • 返回值 return表达式
    • a、print会把结果直接打印到控制台(强制输出到控制台)
    • b、return会把结果返回给你,由你处置
    • c、返回值必须要有一个变量来进行接收
    • d、return 后面的代码是不会被执行的
    • 什么时候用return?(需要返回值进行处理;)
    #第一种:使用print,会导致拿不到result的值def add_num(m,n):    sum = 0    for i in range(m ,n+1):        sum += i    print(sum)result = add_num(1,100)print("函数调用计算结果值",result)控制台打印结果:5050函数调用计算结果值 None
    
    #第二种:使用return ,可以获得result的值
    
    def add_num(m,n):
        sum = 0
        for i in range(m ,n+1):
            sum += i
    #    print(sum)
        return sum
    
    result = add_num(1,100print("函数调用计算结果值",result)
    
    控制台打印结果:
    
    函数调用计算结果值 5050
    
    #第三种:既能打印,又有返回值
    
    def add_num(m,n):
        sum = 0
        for i in range(m ,n+1):
            sum += i
        print(sum)
        return sum
    
    result = add_num(1,100print("函数调用计算结果值",result)
    
    控制台打印结果:
    5050
    函数调用计算结果值 5050
    
    #第四种:return后面存在代码不会被执行
    
    def add_num(m,n):
        sum = 0
        for i in range(m ,n+1):
            sum += i
        return sum
        print(sum)
    
    result = add_num(1,100print("函数调用计算结果值",result)
    
    控制台打印结果:
    函数调用计算结果值 5050

    四、变量的作用范围

    • 规范:全局变量:大写字母      局部变量:小写字母
    • 区别1:作用域不一样:
                    a、全局变量:在当前Py模块中都可以调用
                    b、局部变量:只能在函数内部使用
    • 区别2:调用优先级不一样:如果全局变量与局部变量名存在重复的情况下,优先调用局部变量
    • 区别3:如何修改全局变量的值:global  (需要先声明一下全局变量)
    • 区别4:列表和字典都可以去做更改值 (这是一种特殊情况)
    #区别一:作用域不一样:
    C = 6      #全局变量
    def add_num():
        a = 8    #局部变量
        print(a+C)
    add_num()
    print(C)
    print(a)
    
    控制台输出:
    14
    6
    Traceback (most recent call last):
      File "D:/python/day_05/tast/05_02.py", line 8, in <module>
        print(a)
    NameError: name 'a' is not defined
    #区别二:调用优先级不一样
    C = 6   
    def add_num():
        a = 8  
        C = 2  #重名
        print(a+C)
    add_num()
    print(C)
    
    控制台输出:
    10
    6
    #区别三:修改全局变量的值
    C = 6   #全局变量
    def add_num():
        a = 8  
        global C #声明全局变量
        C = 2  
        print(a+C)
    add_num()
    print(C)
    
    控制台输出:
    10
    2
    #区别四:列表和字典都可以去做更改值:第一种
    List_1 =[1, 2, 3]
    def print_list():
          List_1 =10
    #    List_1.append(10)
    #    List_1[2] = 10
          print(List_1)
    print_list()
    print(List_1)
    
    控制台打印:
    10
    [1, 2, 3]
    #区别四:列表和字典都可以去做更改值:第二种(如果值是列表,那么在函数里面进行赋值运算,那么全局变量也会被更改)
    List_1 =[1, 2, 3]
    def print_list():    
        List_1[2] = 10
        print(List_1)
    print_list()
    print(List_1)
    
    控制台打印:
    [1, 2, 10]
    [1, 2, 10]

     五、参数

    • 位置参数、默认参数:函数:从左往右传递值
    • 动态参数:一个参数:把传递的参数当做元组处理
    • 动态参数:两个星号:把传递进来的参数作为字典处理
    #位置参数、默认参数
    def add(a=1,b=2,c=3):
        print(a+b+c)
    add(b=6)       #6传递给b
    add(6)             #6传递给a
    
    控制台输出值:
    10
    11
    #动态参数
    def add_1(*args):
    print(args)
    add_1(1,2,3,4)
    
    控制台输出:
    (1, 2, 3, 4)
    
    def add_2(*args):
        print(args)
    add_2([1, 2, 3, 4])
    
    控制台输出:
    ([1, 2, 3, 4],)
    #两个星号的动态参数:将输入的参数当做字典处理
    def add_3(**args):
        print(args)
    
    add_3(x=1, y=2)
    
    控制台输出:
    {'x': 1, 'y': 2}
    
    #一个星号/两个星号:参数输入
    def add_4(*args,**kwargs):
    print("第一个参数", args)
    print("第二个参数", kwargs)
    add_4(1, 2, 3, 4, x=1, y=2)
    
    控制台输出:
    第一个参数 (1, 2, 3, 4)
    第二个参数 {'x': 1, 'y': 2}
    
    #一个星号/两个星号:参数输入
    def add_5(*args,**kwargs):
        print("第一个参数", args)
        print("第二个参数", kwargs)
    dict_1={"age":18,"sex":"f"}
    add_5(1, 2, 3, 4,**dict_1 )
    
    控制台输出:
    第一个参数 (1, 2, 3, 4)
    第二个参数 {'age': 18, 'sex': 'f'}
  • 相关阅读:
    PHP获取当前服务器版本,Ip等详细信息
    Alipay 支付类
    php对接app支付宝支付出错Cannot redeclare Decrypt()
    Alipay支付宝支付 报错 invalid [default store dir]: /tmp/
    C# .net 高清压缩图片 合并图片方法
    csharp C#数字字符串排序orderby的问题解决
    tesseract 4.0 ocr图像识别利器,可识别文字。图片越高清越准确
    mysql update ...select的使用 & update 遇到 disable safe 的解决方法
    在Visual Studio 2013中安装Mysql for EntityFramework
    Mysql 中如何创建触发器
  • 原文地址:https://www.cnblogs.com/Rosay9204781/p/9173616.html
Copyright © 2011-2022 走看看