沉铝汤的破站

IS LIFE ALWAYS THIS HARD, OR IS IT JUST WHEN YOU'RE A KID

python-函数

0x00定义函数

def echo_hi():
	"""打招呼"""
	print("Hello!")
echo_hi()

三引号(三个单引号或者双引号)之间的文档字符串,python会为这个函数生成文档

0x01 传参

这里只挑特殊点讲

关键字实参

我们知道传参要注意顺序。但关键字实参可以不在意顺序, btw, 为了美观函数中的默认值和关键字传参等号两边不要带空格哦 

def a_function(pl1, pl2):

a_function(pl2='xxx', pl1='yyy')

默认值

和C++一样,懒得写了

0x02 返回值

return, 好像没什么好讲的

0x03 传递列表

就像普通的一样传就行了,值得注意的是,在函数中操作列表会影响到原列表,在不希望原列表被改变的情况下,可以使用以下代码传递列表副本

function_name(list_name[:])

0x04 传递任意数量的参数

一看就懂,代码如下:

def a_function(*pl):
    """传递任意数量的参数"""
a_function("s","u")

python会将其封装到一个元组之中,如:('s', 'u')

结合使用位置实参和任意数量参数

说的就是如果有多个参数,其中有一个是任意数量传参,记得把它放最后面。

使用任意数量的关键字实参

def build_profile(first, last, **user_info):
 """创建一个字典,其中包含我们知道的有关用户的一切"""
 	profile = {}
	profile['first_name'] = first
 	profile['last_name'] = last
	for key, value in user_info.items(): 
     	profile[key] = value
 	return profile

user_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
print(user_profile) 

注意上面的形参**user_info有两个星号,两个星号让Python创建了一个空字典

0x05 将函数存储在模块中

模块,看起来就像C++的多文件

导入整个模块

模块大家都知道,但是模块要怎么使用呢,把函数封装在fun.py,然后怎么在main.py导入并使用呢?下面就让小编带大家看看吧!

#main.py
import fun#导入模块

fun.function1()#简单来说,使用模板的函数可以这样moudle_name.function_name()
fun.function2()

导入特定的函数

from fun import function1, function2 #导入特定函数

function1()#这时候就可以直接使用了
function2()

使用as给函数指定别名

from fun import function1 as fun1

fun1()

使用as给模块指定别名

import fun as f

导入模块中的所有函数

from fun import *

这种偷懒的做法其实是不好的,可能带来意想不到的冲突问题