0%

函数

函数

使用的是python3.x版本

函数对应的就是java的方法,不过写法倒是和JavaScript类似,使用def来定义,函数名结尾为冒号

不包含参数的函数

1
2
3
4
5
6
# say_hello():后所有缩进的行作为函数体
def say_hello():
print('hello')

# 调用函数
say_hello()

包含方法参数的函数

1
2
3
4
5
6
7
8
9
def print_max(a,b):
if a > b:
print(a,'是最大值')
elif a == b:
print('两者相等')
else:
print(b,'是最大值')

print_max(5,7)

函数默认值参数

有时候我们可能希望一些参数可选并使用默认值,可以在定义函数时用=来赋予默认值(注意:使用默认值时,在形参列表中必须先列出没有默认值的实参。也就是只有位于末尾的参数才能被赋予默认值)

1
2
3
4
5
6
def function_default(a,b=1,c=5):
print('a = ',a,',b = ',b,',c = ',c)

function_default(100)
function_default(10,2)
function_default(8,0,8)

输出结果

1
2
3
a =  100 ,b =  1 ,c =  5
a = 10 ,b = 2 ,c = 5
a = 8 ,b = 0 ,c = 8

关键字参数

前面的那些函数我们都是根据位置来和函数的参数一一对应的,python还支持使用名称而非位置来指定函数中的参数,使得不需要考虑函数调用中的实参顺序

1
2
3
4
5
6
7
8
9
10
11
12
def function_keyword(a,b=1,c=5):
print('a = ',a,',b = ',b,',c = ',c)


#a = 100 ,b = 1 ,c = 5
function_keyword(100)
# a = 10 ,b = 1 ,c = 2
function_keyword(10,c=2)
# a = 8 ,b = 8 ,c = 0
function_keyword(b=8,c=0,a=8)
# 这个调用会报错,python会认为a参数有多个值,因为没有使用名称的会按照顺序赋值
function_keyword(5,c=0,a=8)

可变参数

有些时候,参数的数量是不可定的,可以使用*来实现可变参数

1
2
3
4
5
6
7
8
9
10
11
def funtion_args(a=5, *nums, **dicts):
print('a =',a)
# 遍历nums
for item in nums:
print('item值为',item)

# 遍历dicts
for key,value in dicts.items():
print('key为',key,',value为',value)

funtion_args(1,2,3,4,5,name='zs',age=18)

对于*nums,会将所有位置参数汇聚到nums的元组中。

对于**dicts会将所有关键字参数汇集到dicts的字典中。

有返回值

函数可以接收一些数据,然后返回一些数据,可以使用return来将值返回

1
2
3
4
5
def get_name():
return '张三'

name=get_name()
print('名字为',name)

使用模块

python中的模块就类似于java中的package,使得函数可以进行重用。

比如,我们有一个make_module.py文件

1
2
3
4
5
6
# make_module.py
def get_module_name():
return 'make_module'

def get_name():
return 'lalall'

现在我们想要调用make_module中定义的函数,在其他文件中import该模块就可以调用模块下的方法

1
2
3
4
5
# 导入整个模块
import make_module

print('使用公共方法')
print(get_module_name())

function_local.py中有两个函数,如果我们想要导入特定的函数,语法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# from 模块名称 import 函数名称
from make_module import get_module_name
# 导入多个的话用逗号隔开
from make_module import get_module_name,get_name
# 如果函数名称太长或者存在和程序中现有函数冲突的情况,可以使用as来指定别名
from make_module import get_module_name as mn
# 也可以给模块指定别名
import make_module as m
# 导入模块中所有函数使用*
from make_module import *


# 使用这种方式调用函数,函数名前不需要使用模块名
from make_module import get_module_name,get_name

print('使用公共方法')
print(get_name())

print(get_module_name())

很多时候都要使用外部模块,可以使用pip(如果使用的python3的话需要使用pip3)来进行下载安装模块(mac/linux)

安装pip

1
python3 get-pip.py

欢迎关注我的其它发布渠道