• python


    1. 函数定义

    1 # 函数定义
    2 # 通过关键字def来定义。这一关键字后跟一个函数的标识符,在跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾。另起一行的语句块是函数体。
    3 # def 函数名():
    4 def say_hello():
    5     print('hello')
    6 
    7 say_hello()   # 函数调用

    2. 函数参数

     1 # 函数参数
     2 def compare(a, b):  # 两个参数a, b(形参)
     3     if a > b:
     4         print(a, 'is big')
     5     elif a == b:
     6         print('{} is equal to {}'.format(a, b))
     7     else:
     8         print('{} is big'.format(b))
     9 
    10 compare(5, 5)

    3. 默认值参数

     1 # 默认参数值
     2 '''
     3 目标:使一些参数可选并使用默认值
     4 在函数定义时附加一个赋值运算符(=)来为参数指定默认参数值,默认参数值应该是常数,不可变
     5 默认参数应位于函数参数列表最后(因为传参时按照参数所在位置依次分配的),即在函数的参数列表中,拥有默认参数值的参数不能位于没有默认参数值的参数之前。
     6 '''
     7 def say_hello(a, times=1):
     8     print(a * times)
     9 
    10 say_hello('hello ')
    11 say_hello('hello ', 5)

    4. 关键字参数

     1 # 关键字参数
     2 '''
     3 如果你有一些具有许多参数的函数,而又希望只对其中的一些进行指定,就可以通过命名它们来給这些参数赋值
     4 使用命名(关键字)而非位置来指定函数中的参数
     5 优点1:我们不再需要考虑参数的顺序
     6 优点2:可以只对那些我们希望的参数赋值,只要其他参数都具有默认参数值
     7 '''
     8 def func3(a, b=5, c=10):
     9     print('a = {}, b = {}, c = {}'.format(a, b, c))
    10 
    11 func3(3, 7)        # a=3, b=7, c=10
    12 func3(25, c=24)   # 指定关键字参数c的值  a=25, b=5, c=24
    13 func3(c=50, a=100)   # 关键字参数c和a,不用考虑顺序   a=100, b=5, c=50

    5. 可变参数

     1 # 可变参数
     2 '''
     3 若希望定义的函数里面有任意数量的变量(参数数量可变),可以通过使用星号来实现
     4 通过序列和元组实现
     5 '''
     6 def total(a=5, *numbers, **phonebook):
     7     print('a', a)
     8 
     9     # 遍历元组中的所有项目
    10     for single_item in numbers:
    11         print('single_item', single_item)
    12 
    13     # 遍历字典中的所有项目
    14     for first_part, second_part in phonebook.items():
    15         print(first_part, second_part)
    16 
    17 print(total(10, 1, 2, 3, jack=1123, jone=2231, inge=1560))

    6. return语句

     1 # return 语句
     2 ''' 
     3 return语句用于从函数中返回,也就是中断函数。在中断函数时,从函数中返回一个值
     4 若return语句没有搭配任何一个值,则代表着返回None。None在python中是一个特殊的类型,代表着虚无。例:它用于指示一个变量没有值,如果有值则它的值便是None
     5 每一个函数都在其末尾隐含了一句return None,除非你写了自己的return语句
     6 '''
     7 def maxinum(x, y):  # 例1
     8     if x > y:
     9         return x
    10     elif x == y:
    11         return 'x is equal to y'
    12     else:
    13         return y
    14 
    15 print(maxinum(5, 5))
    16 
    17 
    18 def som_fun():   # 例2
    19     pass   # pass语句用于指示一个没有内容的语句块
    20 
    21 print(som_fun())   # 打印None

    7. 局部变量

     1 # 局部变量
     2 # 所有变量的作用域,是它们被定义的块,从定义它们的名字的定义点开始
     3 x = 5
     4 
     5 def func1(x):
     6     print('x is', x)
     7     x = 2  # 同名的局部变量的值改变,不影响同名的全局变量的值
     8     print('local x is', x)  # x = 2
     9 
    10 func1(x)
    11 print('global x is', x)  # x = 5

    8. 全局变量

     1 # 全局变量 global
     2 # 如果想给一个全局变量赋值,使用global关键字。因为在不使用global语句的情况下,不可能为一个定义于函数之外的变量赋值
     3 # 使用global,为一个定义于函数之外的变量赋值(使用global告诉python,这一变量是全局的)
     4 y = 5
     5 
     6 def func2():
     7     global y  # 使用global声明全局变量,若在函数体内有同名局部变量,赋值会影响全局变量
     8     print('before modified y is', y)   # y = 5
     9     y = 2
    10     print('modified y is', y) # y = 2
    11 
    12 func2()
    13 print('global y is', y) # y = 2

    7. 文档字符串docstring

    1)函数的文档字符串

     1 # 文档字符串 DocString
     2 """
     3 函数的第一行逻辑行中的字符串,是该函数的文档字符串(也适用于模块和类)
     4 规则:多行字符串
     5 约定格式:第一行以某大写字母开始,以句号结束。第二行为空行。第三行任意说明
     6 """
     7 def print_max(x, y):
     8     """
     9     Prints the maximum of two numbers. 打印两个数值中的最大数。
    10 
    11     :param x:
    12     :param y:
    13     :return:
    14     """
    15     x = int(x)
    16     y = int(y)
    17 
    18     if x > y:
    19         print(x, 'is maximum')
    20     else:
    21         print(y, 'is maximum')
    22 
    23 print_max(3, 5)
    24 print(print_max.__doc__)  # 打印docstring(获取函数print_max的__doc__属性)

    2)类和方法的文档字符串:

    1 class A:
    2     """类A的文档字符串"""
    3     def fun_A(self):
    4         """方法A的文档字符串"""
    5         pass
    6 
    7 
    8 print(A.__doc__)         # 访问类的文档字符串
    9 print(A.fun_A.__doc__)   # 访问方法的文档字符串
  • 相关阅读:
    从n个数中随机选出k个数,并判断和是不是素数
    最小生成树模板——给出两点和权值
    leetcode 538. 把二叉搜索树转换为累加树 【时间击败100.00%】 【内存击败96.46%】
    leetcode 100. 相同的树【 时间击败100.00%】 【内存击败83.99%】
    leetcode 572. 另一个树的子树 【时间击败88.10%】 【内存击败96.40%】
    java中hashmap的实现原理
    Java的int和Integer
    LeetCode 26. 删除排序数组中的重复项 【时间击败100.00%】 【内存击败95.37%】
    LeetCode 25. K 个一组翻转链表 【时间击败99.35%】 【内存击败74.50%】
    LeetCode 24. 两两交换链表中的节点 【时间击败100.00%】 【内存击败86.60%】
  • 原文地址:https://www.cnblogs.com/xiaochongc/p/12201629.html
Copyright © 2020-2023  润新知