Python进阶—函数编程

0 阅读7分钟

函数的定义和创建

  • 函数的定义

    • 函数指将一组语句的集合通过一个变量名封装起来,调用这个函数变量名,就可以执行函数
  • 函数的特性

    • 减少重复逻辑代码的编写
    • 将程序中的逻辑可以进行扩展
    • 维护项目程序的代码更简单
  • 函数的创建

    # 函数
    def say_hello():
        print("Hello World")
    
    
    say_hello()
    
    Hello World
    

函数的参数

  • 参数

    • 形参 # 形参 def sum1(a, b): return a + b

    • 实参 # 实参 print(sum1(5, 6))

      11
      
    • 默认参数

      • 默认参数需要放在参数的最后位置 # 默认参数 def oblong_area(a, b=3): return a * b

        print(oblong_area(2))
        
        6
        
    • 关键参数

      • 一般函数传参要按照顺序,但是可以通过关键参数(指定参数名字)可以不按照顺序

      • 关键参数必须放在位置参数后面 # 关键参数 def oblong_volume(x, y, z): return x * y * z

        print(oblong_volume(2, z=4, y=3))
        
        24
        
    • 非固定参数 # 非固定参数 def get_info(name, age, *args): print(name, age, args)

      get_info("Steven Wong", 29, "男")
      
      def get_info(name, age, **kwargs):
          print(name, age, kwargs)
      
      
      get_info("Steven Wong", 29, sex="男")
      
      Steven Wong 29 ('男',)
      Steven Wong 29 {'sex': '男'}
      

全局变量和局部变量

  • 全局变量

    • 全局变量是在函数外部定义的变量,它们在程序的整个生命周期内都是可用的 # 全局变量 global_var = "全局变量"

      def print_global_var():
          print(global_var)
      
      
      print_global_var()
      
      全局变量
      
  • 局部变量

    • 局部变量是在函数内部定义的变量,它们只在函数被调用时存在,并在函数执行完毕后被销毁

    • 局部变量只在它们被定义的作用域内有效,即只能在函数内部访问和修改 # 局部变量 def print_local_var(): local_var = "局部变量" print(local_var)

      print_local_var()
      
      局部变量
      
  • 注意

    • 在函数内部修改或者使用全局变量时应该声明 # 修改全局变量 def change_global_var(): global global_var global_var = "修改全局变量" print(global_var)

      change_global_var()
      print(global_var)
      
      修改全局变量
      修改全局变量
      

内置函数

  • 内置函数

    image-20240616010338520

  • abs()

    返回数字的绝对值

  • all()

    如果可迭代对象中的所有元素都为True(或可迭代对象为空),则返回True

  • any()

    如果可迭代对象中的任何元素为True,则返回True

  • chr()

    返回整数对应的ASCII字符(全称为美国信息交换标准代码,128个字符,在处理文件I/O或网络通信时需要使用,实际上更通用的Unicode字符集)

  • dict()

    创建一个字典

  • dir()

    返回对象的属性列表。如果未指定对象,则返回当前范围内的变量、方法和定义的类型列表。

  • help()

    提供有关模块、关键字、属性等的帮助信息。

  • id()

    返回对象的“身份”(一个整数,通常是其在内存中的地址)。

  • input()

    从用户获取输入。

  • int()

    将数字或字符串转换为整数。

  • len()

    返回对象(如字符串、列表、元组等)的长度或项目数。

  • list()

    将可迭代对象转换为列表。

  • locals()

    返回当前局部符号表的字典。如果在一个函数内部调用它,返回的字典将包括函数的局部变量名及其值。

  • map()

    将一个函数应用于一个或多个可迭代对象的项,并返回一个新的迭代器,其中包含函数的结果。

  • max()

    返回给定参数中的最大值。如果有多个参数,则返回最大的那个;如果只有一个可迭代对象,则返回该对象中的最大值。

  • min()

    与max()相反,返回给定参数中的最小值。

  • open()

    用于打开一个文件,返回一个文件对象(通常是一个_io.TextIOWrapper实例),该对象可以用于读取或写入文件。

  • ord()

    返回单个字符(Unicode码点)的整数值。

  • print()

    将指定对象打印到标准输出(通常是屏幕)。

  • range()

    返回一个不可变的序列类型,通常用于在循环中生成一个数字序列。

  • round()

    将浮点数四舍五入到指定的小数位数。

  • str()

    将对象转换为字符串形式。

  • sum()

    返回可迭代对象(如列表、元组或集合)中所有项的总和。

  • type()

    返回对象的类型。

  • zip()

    将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。

  • enumerate()

    将可迭代的对象(列表、元组、集合)组合为一个缩影序列,同时可以输出数据和下标,for循环

# 内置函数
a = -1
arr = [1, 2, 3]

print("hello world")  # 将指定对象打印到标准输出(通常是屏幕)
print(abs(a))  # 返回数字的绝对值
print(all(arr))  # 如果可迭代对象中的所有元素都为True(或可迭代对象为空),则返回True
print(any(arr))  # 如果可迭代对象中的任何元素为True,则返回True
print(max(arr))  # 返回给定参数中的最大值
print(min(arr))  # 返回给定参数中的最小值
print(chr(65))  # 返回整数对应的ASCII字符
print(ord('a'))  # 返回单个字符(Unicode码点)的整数值
print(dict(a=1, b=2, c=3))  # 创建一个字典
print(dict([('a', 1), ('b', 2), ('c', 3)]))
print(dir())  # 返回对象的属性列表。如果未指定对象,则返回当前范围内的变量、方法和定义的类型列表
print(dir(str))
help(print)  # 提供有关模块、关键字、属性等的帮助信息
print(id(a))  # 返回对象的“身份”(一个整数,通常是其在内存中的地址)
print(str(123))  # 将对象转换为字符串形式
print(int("123"))  # 将数字或字符串转换为整数
print(len("123"))  # 返回对象(如字符串、列表、元组等)的长度或项目数
print(list((1, 2, 3)))  # 将可迭代对象转换为列表
print(locals())  # 返回当前局部符号表的字典。如果在一个函数内部调用它,返回的字典将包括函数的局部变量名及其值
print(list(map(lambda x: x ** 2, arr)))  # 将一个函数应用于一个或多个可迭代对象的项,并返回一个新的迭代器,其中包含函数的结果
print(list(range(5)))  # 返回一个不可变的序列类型,通常用于在循环中生成一个数字序列
print(round(3.1415926, 2))  # 将浮点数四舍五入到指定的小数位数
print(sum([1, 2, 3, 4, 5]))  # 返回可迭代对象(如列表、元组或集合)中所有项的总和
print(type(1))  # 返回对象的类型
print(list(zip(["a", "b", "c"], [1, 2, 3])))  # 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象
# 将可迭代的对象(列表、元组、集合)组合为一个缩影序列,同时可以输出数据和下标,for循环
for index, item in enumerate(["a", "b", "c"]):
    print(index, item)

# 用于打开一个文件,返回一个文件对象(通常是一个_io.TextIOWrapper实例),该对象可以用于读取或写入文件
with open('test.txt', 'w') as f:
    f.write("hello world")

# 从用户获取输入
user_input = input("请输入:")
print(user_input)
hello world
1
True
True
3
1
A
97
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'arr', 'change_global_var', 'get_info', 'global_var', 'oblong_area', 'oblong_volume', 'print_global_var', 'print_local_var', 'say_hello', 'sum1']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Help on built-in function print in module builtins:

print(*args, sep=' ', end='\n', file=None, flush=False)
    Prints the values to a stream, or to sys.stdout by default.

    sep
      string inserted between values, default a space.
    end
      string appended after the last value, default a newline.
    file
      a file-like object (stream); defaults to the current sys.stdout.
    flush
      whether to forcibly flush the stream.

140710075548728
123
123
3
[1, 2, 3]
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000220496B8D70>, '__spec__': None, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\Projects\\pyCharm\\demo1\\test4.py', '__cached__': None, 'say_hello': <function say_hello at 0x00000220498BB5E0>, 'sum1': <function sum1 at 0x0000022049C66090>, 'oblong_area': <function oblong_area at 0x000002206ACBE090>, 'oblong_volume': <function oblong_volume at 0x000002206ACBD170>, 'get_info': <function get_info at 0x000002206AE28250>, 'global_var': '修改全局变量', 'print_global_var': <function print_global_var at 0x000002206AD53AB0>, 'print_local_var': <function print_local_var at 0x000002206AE28300>, 'change_global_var': <function change_global_var at 0x000002206AE283B0>, 'a': -1, 'arr': [1, 2, 3]}
[1, 4, 9]
[0, 1, 2, 3, 4]
3.14
15
<class 'int'>
[('a', 1), ('b', 2), ('c', 3)]
0 a
1 b
2 c
请输入: