• (python基础 函数)


    关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

    必需参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

    默认参数:调用函数时,如果没有传递参数,则会使用默认参数

    全局变量和局部变量:
    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

    注意:列表,字典,集合,类都可以在局部改全局。字符串和整数不能以局部改全局

    递归函数:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
    递归特性:
    1. 必须有一个明确的结束条件
    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

    eval()字符串转成字典

      1 #!/usr/bin/env python
      2 #-*-coding:utf-8-*-
      3 #_author_:Keep
      4 '''
      5 def area(width,height):
      6     #calculate area
      7     return width * height
      8 
      9 def print_welcome(name):
     10     print("Welcome!",name)
     11 print_welcome("keep")
     12 w = 5
     13 h = 6
     14 print("width =",w,"height =",h,"area = ",area(w,h))
     15 '''
     16 
     17 '''
     18 #必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
     19 def printme(str):
     20     '打印任何传入的字符串'
     21     print(str)
     22     return
     23 printme(str= "你好!")
     24 '''
     25 '''
     26 def printinfo(name,age):
     27     "打印任何传入的字符串"
     28     print("名字:",name)
     29     print("年龄:",age)
     30     return
     31 printinfo(age=88,name='keep')#函数参数的使用不需要使用指定顺序
     32 printinfo('keep',50)
     33 '''
     34 '''
     35 def printinfo(name,age = 23):
     36     '打印任何传入的字符串'
     37     print("名字:",name)
     38     print("年龄:",age)
     39     return
     40 printinfo(name = 'keep',age = 25)
     41 print("******************************")
     42 printinfo(name = 'keep')
     43 '''
     44 '''
     45 def printinfo(arg1,*vartuple):#加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
     46     print("输出:")
     47     print(arg1)
     48     print(vartuple)
     49     #for var in vartuple:
     50      #   print(var)
     51     return
     52 printinfo(10,20,50)
     53 '''
     54 '''
     55 def printinfo(arg1,**vardict):#加了两个星号 ** 的参数会以字典的形式导入
     56     "打印传入任何形式的参数"
     57     print("输出:")
     58     print(arg1)
     59     print(vardict)
     60 printinfo(arg1 = 1,a = 2,b = 3)
     61 '''
     62 '''
     63 #return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
     64 def sum(arg1,arg2):
     65     '返回2个参数的值'
     66     total = arg1 + arg2
     67     print("函数内:",total)
     68     return total
     69 total = sum(10,30)
     70 print("函数外:",total)
     71 '''
     72 '''
     73 #在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。
     74 total = 50 #全局变量
     75 def sum(arg1,arg2):
     76     "返回2个参数的积"
     77     total = arg1 * arg2
     78     print("函数内是局部变量:",total)
     79     return total
     80 sum(20,30)
     81 print("函数外是全局变量:",total)
     82 '''
     83 '''
     84 #修改全局变量需要用global
     85 num = 2
     86 def fun():
     87     global num #需要使用global关键字声明
     88     print(num)
     89     num = 888
     90     print(num)
     91 fun()
     92 print(num)
     93 '''
     94 '''
     95  #修改作用域的变量需要用nonlocal
     96 def outer():
     97     num = 123
     98     print(num)
     99     def inner():
    100         nonlocal num #nonlocal关键字声明
    101         num = 789
    102         print(num)
    103         inner()
    104     print(num)
    105 outer()
    106 '''
    107 #递归函数:
    108 def calc(n):
    109     print(n)
    110     if int(n/2) >0:
    111         return calc(int(n/2))
    112     print("***",n)
    113 calc(10)
    学习过程演示代码
  • 相关阅读:
    CopyOnWriteArrayList与ConcurrentHashMap
    Latch、Barrier、ThreadLocal
    Future和FutureTask
    SingleThreadExecutor、FixedThreadExecutor、CachedThreadPool、ScheduledThreadPoolExecutor
    ThreadPoolExecutor
    ConcurrentLinkedQueue
    PriorityBlockingQueue
    pom activeByDefault 不生效
    配置log4j2日志报错 Cannot find the declaration of element 'Configuration'
    顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付
  • 原文地址:https://www.cnblogs.com/keepma/p/10561452.html
Copyright © 2020-2023  润新知