第二组 函数定义
Python 可以使用`def`关键字来定义函数,和变量一样每个函数也有一个响亮的名字,而且命名规则跟变量的命名规则是一致的。 在函数名后面的圆括号中可以放置传递给函数的参数,相当于是函数的自变量,而函数执行完成后我们可以通过`return`关键字来返回一个值,这相当于是因变量。
2.1 函数的基本功能
函数的参数:在Python中,函数的参数可以有默认值,也支持使用可变参数
可以给函数的参数设定默认值,如果在调用函数时没有传入对应参数的值,就会使用默认参数。例子如下:
def add(a=0,b=0,c=0):
return a+b+c
如果没有指定参数就是直接以a=b=c=0作为输入,而且在传递参数的时候可以不按照设定的顺序进行传递
print(add(c=100,b=200,a=100)) #输出值是400
def add1(a=0,b=0,c=0):
return a
print(add1(c=50,b=200,a=100)) #输出值是100,说明还是根据变量名进行赋值
对于不确定的输入参数,使用可变参数 *+变量名,例子如下:
def add(*var): #在变量名前面加*,表示可变参数。在调用add时可以传入多个参数。
total=0
for a in var:
total += a
return total
2.2 模块化管理函数
函数有时会出现命名冲突的问题,那么后面命名的函数会覆盖掉之前的。为了避免这种情况,使用多个文件(每一个文件代表一个模块module),那么在不同的模块中可以用相同的名字去命名函数,在使用的时候通过‘’import‘’导入。
例如:
module1.py
```Python
def FUNC():
print(‘hello, world!‘)
```
module2.py
```Python
def FUNC():
print(‘goodbye, world!‘)
```
然后用如下的方法来区别到底使用哪一个函数
test.py
```Python
import module1 as m1
import module2 as m2
m1.FUNC() #这里的.FUNC()的用法会在后面介绍道,是面向对象的知识
m2.FUNC()
```
2.3 避免执行模块中的代码(只想要导入模块中的函数)
如果我们导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码。if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“__main__”。
module3.py
```Python
def foo():
pass
def bar():
pass
# __name__是Python中一个隐含的变量它代表了模块的名字
# 只有被Python解释器直接执行的模块的名字才是__main__
if __name__ == ‘__main__‘:
print(‘call foo()‘)
foo()
print(‘call bar()‘)
bar()
```
test.py
```Python
import module3
# 导入module3时 不会执行模块中if条件成立时的代码 因为模块的名字是module3而不是__main__
```
原文:https://www.cnblogs.com/BennyCoding/p/12303487.html