Python函数是一段具有特定功能的代码块,它可以被重复调用。函数在Python中是一个非常重要的概念,它可以帮助我们组织代码,提高代码的可读性和可维护性,同时还可以避免代码重复。
定义Python函数的基本语法如下:
def function_name(parameters):
# function body
return value
其中,function_name 是函数的名称,parameters 是函数的参数列表,function body 是函数体,return value 是函数的返回值。
Python内置函数是指Python语言中已经定义好的函数,可以直接在程序中调用而不需要自己编写实现代码。以下是一些常用的Python内置函数:
在Python中,你可以定义自己的函数,这些函数可以执行特定的任务。以下是一个简单的例子,它定义了一个函数,该函数接受两个参数并返回它们的和:
def definition(n1, n2):
h = n1+n2
return h
print(definition(12.5,13.5)) #结果为 26.0
在这个例子中, definition是函数的名称,n1和 n2 是函数的参数,return h是函数的返回值。当你调用这个函数时,你需要提供两个参数(在这个例子中是12.5和13.5),然后函数会返回这两个参数的和。
你可以根据需要定义更复杂的函数,这些函数可以接受任意数量的参数,可以执行任何Python代码,甚至可以返回多个值。
需要注意
1.def 函数名()是自定义函数的固定模式括号里面是参数,def相当于定义,如果定义完函数后不去进行调用,那么这个函数和注释效果一样,不起作用
2.函数名的定义要能简单的说明当前函数能完成的功能,和变量一样,要见名知意
3.小括号里面可以是空的,也就是什么都不写,但必须要有(就像核武器,可以不用,但必须要有)
4.调用函数的时候可以直接调用函数名,也可以通过变量赋值来进行调用
在Python中,return 是一个关键字,用于从函数中返回一个值。当函数执行到 return 语句时,函数会立即停止执行,并将控制权返回给调用该函数的代码。
return 语句可以返回任何类型的值,包括基本数据类型(如整数、浮点数、字符串等)和复合数据类型(如列表、字典、元组等)。
下面是一个简单的例子,演示了如何使用 return 语句从函数中返回一个值:
def add_numbers(a, b):
sum = a + b
return sum
result = add_numbers(3, 4)
print(result) # 输出: 7
在这个例子中,add_numbers 函数接受两个参数 a 和 b,将它们相加,并将结果存储在变量 sum 中。然后,使用 return 语句返回 sum 的值。最后,我们将返回值存储在变量 result 中,并使用 print 函数输出结果。
需要注意的是,如果函数中没有 return 语句或者 return 语句没有指定返回值,那么函数会默认返回 None。
下一篇文章会对return关键字进行详细的讲解,两个结合在一起才是全部
def definition(n1, n2):
h = n1+n2
return h
print(definition(12.5,13.5)) #结果为 26.0
这个参数的传入可以一一对应,也可以指定方式的传入,例如(n2=13.5,n1=12.5)
def definition(n1, n2=10):
h = n1+n2
return h
print(definition(12.5))
这里面n2=10就是默认参数,如果有必要的话也可以在调用函数时传入第二个参数,会对默认参数进行覆盖
#不指定参数名称以*args元组的形式接收,指定名称参数以**kwargs字典的形式接收
def z(n1,n2,*args,**kwargs):
print(n1,n2)
print(args)
print(kwargs)
return z
z(1,2,'我很帅',dict=15)
参数传入顺序
必备参数>默认参数>不定长参数
在Python中,函数的作用域是指函数内部定义的变量和函数的作用范围。在函数内部定义的变量具有局部作用域,只能在函数内部访问。而在函数外部定义的变量具有全局作用域,可以在整个程序中访问。
a = 10
def mount():
a = a+1
print(a)
这个是错误的代码,我们可以把全局作用域理解为生活中的公共设施,我们只有使用权,没有修改权,如果想要修改就得和政府/企业声明,因此这个代码是少了个声明
当在函数内部需要访问全局变量时,需要使用global关键字来声明。例如:
a = 10
def mount():
global a
a = a+1
print(a)
mount()
def func():
b = 100
print(b)
func()
print(b)
这个也是错误代码演示,局部作用域可以理解为老王的个人财产,其他人无法使用
正确代码:
def func():
b = 100
return b
b = func()
print(b)
老王的东西想要其他人使用就需要通过return返回出去再通过变量接收
nonlocal关键字是局部变量声明,只有声明之后内部函数才可以修改外部函数中定义的局部变量
def f():
a = 100 #假如你女朋友有100,你想要借50
def f1():
nonlocal a #但是你不知道你女朋友有没有钱,所以你就需要先问一下了,相当于声明
a -= 50
print(a)
return f1() #返回f1()函数,相当于调用了一下
f()
除了全局作用域和局部作用域之外,Python还支持闭包和嵌套函数,这些情况下变量的作用域会有所不同。在闭包中,内部函数可以访问外部函数的变量,即使外部函数已经执行完毕。而在嵌套函数中,内部函数可以访问外部函数的变量和全局作用域的变量。
总结来说,Python函数的作用域包括局部作用域、全局作用域、闭包和嵌套函数等。需要根据具体情况选择合适的作用域来定义和使用变量。
闭包是一种特殊的函数,它可以在函数外部访问函数内部的变量和参数,即使函数已经执行完毕。闭包的主要用途是保存状态、封装逻辑和实现高阶函数等。
闭包的条件:
1.存在于嵌套关系的函数中
2.嵌套的内部函数引用了外部函数的变量(至少一个)
3.嵌套的外部函数会将内部函数名作为返回值放回
def f():
a = 100
def f1():
nonlocal a
a -= 50
print(a)
return f1
x = f() #先调用最外面的函数,然后运行到内部f1()函数返回f1,x=f()=f1
x() #再调用函数f1() ,x()=f1()
上面对局部作用域的解释就是一个闭包函数
递归函数是一种特殊的函数,它调用自身来解决问题。递归函数通常有一个基本情况和一个或多个递归情况,基本情况用于处理简单的情况,递归情况用于将问题分解为更小的子问题,并调用自身来处理这些子问题。
下面是一个简单的例子,演示了如何使用递归函数计算阶乘:
def recursion(n):
if n == 0 or 1:
return 1
else:
return (n*recursion(n-1))
x = recursion(10)
print(x)
在这个例子中,recursion 函数是递归函数。它有一个基本情况(n == 0 or 1),当 n 为0或1时,返回1。它还有一个递归情况(else 分支),将问题分解为更小的子问题,即计算 n * recursion(n-1)。这个递归情况会一直调用自身,直到达到基本情况为止。
需要注意的是,递归函数必须有一个基本情况和一个或多个递归情况,而且必须小心处理递归的终止条件,否则会导致无限递归,导致程序崩溃。
Python中的匿名函数是指没有函数名称的函数表达式。它们通常用于需要一个简单函数操作的情况,而不必定义完整的函数。匿名函数可以使用 lambda 关键字定义。
以下是一个简单的示例,演示如何使用匿名函数计算两个数的和:
sum = lambda x, y: x + y
print(sum(3, 4)) # 输出: 7
在这个例子中,我们使用 lambda 关键字定义了一个匿名函数,它接受两个参数 x 和 y,并返回它们的和。然后我们将这个匿名函数赋值给变量 sum,并调用它来计算 3 和 4 的和。
需要注意的是,匿名函数在需要一个简单函数操作时非常有用,但它们不适合复杂的逻辑或需要重复使用的功能。在这种情况下,应该使用常规的函数定义。
下篇文章会对python中的常用关键字进行详解