函数是什么?
在Python中,function是一组执行特定任务的相关语句。
函数有助于将我们的程序分解为更小的模块化块。随着我们的计划越来越大,功能使其更加有条理和易于管理。
此外,它避免重复并使代码可重用
语法
def function_name(parameters):
"""docstring"""
statement(s)
上面显示的是一个函数定义,它由以下组件组成。
关键字def标记函数头的开始。
用于唯一标识它的函数名称。函数命名遵循在Python中编写标识符的相同规则。
参数(参数),我们通过它将值传递给函数。它们是可选的。
冒号(:)标记函数头的结尾。
用于描述函数功能的可选文档字符串(docstring)。
构成函数体的一个或多个有效的python语句。语句必须具有相同的缩进级别(通常为4个空格)。
用于从函数返回值的可选return语句。
如何调用函数?
一旦我们定义了一个函数,我们就可以从另一个函数,程序甚至Python提示符中调用它。要调用函数,我们只需使用适当的参数键入函数名称
name='Shadow'
def getname(a):
'''这是一个获取我的名字的函数'''
print('My name is',a)
getname(name)
结果:
文档字符串
函数头之后的第一个字符串称为docstring,是文档字符串的缩写。它用于简要解释函数的作用。
虽然可选,但文档是一种很好的编程习惯。除非你能记住你上周吃的晚餐,否则请记录你的代码。
在上面的示例中,我们在函数头的正下方有一个docstring。我们通常使用三引号,以便docstring可以扩展到多行。我们可以将此字符串作为函数的__doc__属性使用。
name='Shadow'
def getname(a):
'''这是一个获取我的名字的函数'''
print('My name is',a)
getname(name)
print(getname.__doc__)
结果:
返回
name='Shadow'
def getname(a):
'''这是一个获取我的名字的函数'''
print('My name is',a)
print(getname(name))
def ifodd(m):
if m%2==0:
return 'It is not odd'
else:
return 'It is odd'
print(ifodd(10))
结果:
变量的范围和寿命
变量的范围是程序中识别变量的部分。函数内定义的参数和变量在外部不可见。因此,它们具有局部范围。
变量的生命周期是变量在存储器中退出的时间段。函数内部变量的生命周期与函数执行的时间一样长。
一旦我们从函数返回它们就会被销毁。因此,函数不记得先前调用的变量值。
下面是一个示例,用于说明函数内部变量的范围。
def my_func():
x = 10
print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x)
结果:
参数
情况一,不给参数会报错:
def my_func(x):
print("Value inside function:",x)
my_func()
结果:
情况二:给默认的参数
def my_func(x=11111):
print("Value inside function:",x)
my_func()
结果:
情况三:有默认参数且给了参数
def my_func(x=11111):
print("Value inside function:",x)
my_func(2222)
结果:
但是
一旦我们有一个默认参数,它右边的所有参数也必须有默认值。
这意味着,非默认参数不能遵循默认参数。
def my_func(y=111,x=0):
print("Value inside function:",y,x)
my_func(2222)
结果:
Python任意参数
有时,我们事先并不知道将传递给函数的参数数量.Python允许我们通过具有任意数量参数的函数调用来处理这种情况。
在函数定义中,我们在参数名称前使用星号(*)来表示这种参数。这是一个例子。
def my_func(*names):
for name in names:
print('Hi',name)
my_func(100)
my_func('aaa','bbb','vvv')
结果:
Python函数: 在列表中移除重复对象
def my_func(names):
empty=[]
for name in names:
if name not in empty:
empty.append(name)
return empty
print(my_func([1,2,3,4,2,3,7,8,9]))
结果: