python中关于函数的基础

明天该休息了,家人们多出去走走

  1. 函数目的: 函数的目的是执行特定的任务或操作。它可以接受输入(参数),处理这些输入并返回结果,或者在执行过程中直接影响程序的状态或输出。

  2. 函数定义: 函数定义指的是在代码中创建函数的过程。在Python中,使用 def 关键字来定义函数,后跟函数名、参数列表和冒号,然后是函数体。

    def my_function(parameter1, parameter2): # 函数体 pass

  3. 函数声明: 函数声明和函数定义通常是指同一个概念,即在代码中声明并定义函数的过程。

  4. 函数调用: 函数调用是指在程序中使用函数的过程,以执行函数体内的操作。调用函数时,使用函数名加上括号,并传递所需的参数(如果有的话)。

    result = my_function(value1, value2)

  5. 函数形参: 函数形参是在函数定义时列出的参数名称,用于接受调用函数时传递的实际参数值。形参在函数体内充当局部变量。

    def greet(name): print(f"Hello, {name}!") # 这里的 name 是形参 greet("Alice")

  6. 函数实参: 函数实参是在调用函数时传递给函数的具体数值或变量。实参的值会赋给函数定义中的形参。

    def add_numbers(a, b): return a + b # 这里的 3 和 4 是实参 
    result = add_numbers(3, 4)

  7. 函数返回值: 函数返回值是函数执行完成后返回给调用者的结果。在Python中,使用 return 语句来返回值。如果函数没有显式使用 return,则默认返回 None

     

    pythonCopy Code

    def multiply(a, b): return a * b result = multiply(5, 6) # 返回值是 30

  8. 函数的参数类型: 在Python中,函数的参数类型是动态的,意味着不需要提前声明参数的类型。函数可以接受任意类型的参数,包括基本类型(如整数、浮点数)、序列类型(如列表、元组)和字典等。

    def process_data(data_list): # 处理数据的函数体 pass # data_list 可以是任意类型的序列 process_data([1, 2, 3])

Python 是一种动态类型语言,这意味着函数的参数类型不是在定义函数时指定的,而是在运行时确定的。这种灵活性使得Python在处理各种数据类型和场景时非常便利。

9. 变量的作用域(global 与 nonlocal)

  • 全局作用域(Global Scope): 在Python中,定义在模块文件顶层的变量拥有全局作用域,可以在整个模块的任何地方访问。

    x = 10 # 全局变量 def foo(): print(x) # 可以访问全局变量 x foo()

  • 局部作用域(Local Scope): 在函数内部定义的变量属于局部作用域,只能在函数内部访问。

     

    def foo(): y = 20 # 局部变量 print(y) foo() # print(y) # 这里会报错,y 是 foo 函数的局部变量

  • global 关键字: 如果在函数内部需要修改全局变量的值,可以使用 global 关键字声明变量。

    x
     = 10 # 全局变量 def foo(): global x x = 20 # 修改全局变量 x 的值 foo() print(x) # 输出 20

  • nonlocal 关键字nonlocal 关键字用于在嵌套函数中访问并修改嵌套作用域(非全局、非局部)中的变量。

     

    def outer(): x = 10 # outer 函数的局部变量 
    def inner(): nonlocal x x = 20 # 修改 outer 函数的局部变量 x 的值 
    inner() print(x) # 输出 20 outer()

10. 递归函数

递归函数是指在函数定义中调用自身的函数。递归通常用于解决可以被分解为相同问题的子问题的情况,比如数学上的阶乘或者数据结构的遍历。

def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
 result = factorial(5) # 计算 5 的阶乘 print(result) # 输出 120

递归函数需要有结束条件(base case),否则会导致无限递归,最终导致栈溢出。

11. 匿名函数(Lambda 函数)

匿名函数是一种没有函数名的函数,通常用于需要一个简单函数的地方。在Python中,使用 lambda 关键字来创建匿名函数。

# lambda 函数用于求平方 square = lambda x: x**2 print(square(5)) # 输出 25

匿名函数通常用于函数式编程的场景,例如作为参数传递给高阶函数(如 mapfilter)或者简化代码中的一些小函数。

12. 闭包(Closure)

闭包指的是延伸了作用域的函数,它可以访问定义体之外定义的非全局变量。通常情况下,闭包允许函数访问其创建时作用域内的变量,即使这些变量在函数调用时不可见。

def outer_func(x): 
    def inner_func(y): return x + y 
    return inner_func
    closure = outer_func(5)

 print(closure(3)) # 输出 8

在这个例子中,inner_func 就是一个闭包,它可以访问外部函数 outer_func 的变量 x

13. 装饰器(Decorator)

装饰器是一种特殊的函数,用于修改其他函数的行为。装饰器在不修改函数源代码的情况下,提供了一种方便的方式来包装、扩展或修改函数或方法的功能。

def my_decorator(func): 
def wrapper(): print("Something is happening before the function is called.") 
func() 
print("Something is happening after the function is called.") 
return wrapper @my_decorator def say_hello(): 

print("Hello!") say_hello()

在这个例子中,my_decorator 是一个装饰器函数,它接受一个函数作为参数,并返回一个包装函数 wrapper。通过 @my_decorator,我们可以将装饰器应用到 say_hello 函数上,从而改变其行为。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值