python的组成:函数、对象、模块
1.函数
- 函数是组织好的模块,用来实现单一的或者相关联功能的代码块
- 提高代码的重复利用率
1.1 函数的基本格式
def 函数名() :
函数体
1.2 函数调用的过程
- 函数调用,去上边查找函数的定义,执行其函数体,并返回结果
1.3 形参,实参,关键字参数,默认参数
- 形参------------------定义函数时的参数
- 实参------------------使用函数时的参数
- 关键字参数--------在多个参数下,防止参数顺序混乱影响程序结果`(调用函数时用)
- 默认参数-----------在定义函数时,为形参附初值,(调用时,实参传空,使用默认值)
- 收集参数-----------也叫(可变参数),参数个数作者自定义,
*
做标识
原理:把输入的参数作为一个元组。详解,见下
- 收集参数与其他参数混合使用------(调用函数时,其他参数必须以关键字参数形式参入)
1.4 自定义函数及函数调用
# 无参
def MyFirstFunction():
print('2020.1.19.17.28')
# 一个参数
def SecondFunction(name):
print(name+'是谁?')
# 两个参数(参数之间用逗号隔开)
def ThreeFunction(name,thing) :
print(name+'非常喜欢'+thing)
# 函数调用
MyFirstFunction()
# 输出:2020.1.19.17.28
SecondFunction('妮可罗宾')
# 输出:妮可罗宾是谁?
ThreeFunction('托尼托尼·乔巴','吃棉花糖')
# 输出:托尼托尼·乔巴非常喜欢吃棉花糖
# 关键字参数(参数顺序混乱也不影响程序结果)
ThreeFunction(thing='吃棉花糖',name='托尼托尼·乔巴')
# 输出:托尼托尼·乔巴非常喜欢吃棉花糖
# 默认参数
# 定义函数
def ThreeFunction(name='A',thing='B') :
print(name+'非常喜欢'+thing)
# 调用函数时只传递一个参数,另一个传空
ThreeFunction('托尼托尼·乔巴')
#输出:托尼托尼·乔巴非常喜欢B
# 收集参数(可变参数)
# 输出参数个数并循环输出参数名
def change(*person):
print(len(person))
for echo in person:
print(echo)
# 调运函数(随机输入参数)
change('name','sex','age','address')
# 相当于把('name','sex','age','address')作为一个元组赋值给person
# 输出 4
#name
#sex
#age
#address
# 收集参数与其他参数混合使用
# 定义函数
def change(*person,contry):
print(len(person))
print(country)
for echo in person:
print(echo)
# 调用函数(以关键参数的形式传入其他参数)
change('路飞','山治','索隆','娜美',country='日本')
# 输出: 4
# 日本
# 路飞
# 山治
# 索隆
# 娜美
1.5 函数的返回值reture
# 定义函数
def name(name):
return name
# return返回值
name('蒙奇D· 路飞')
# 输出:'蒙奇D· 路飞'
# 返回多个值(列表或元组)
def name():
return 'name','sex','age','id'
#输出全部参数
name()
# 输出:('name', 'sex', 'age', 'id')
# 输出单个参数
name()[0]
# 输出:'name'
1.6 函数文档
- 作用:对函数做出解释,便于维护
- 定义文档:在函数体里利用
' 单引号 '
包裹文档 - 查看文档:函数名.__doc__查看文档
注意:没有
()
# 定义文档
def sumOfNumber(a,b):
'①形参(a,b) ②功能:求a+b的和'
print(a+b)
# 查看文档
sumOfNumber.__doc__
# 输出:'①形参(a,b) ②功能:求a+b的和'
1.7 局部变量与全局变量
- 同Java
- 在函数里修改全局变量,python会新建一个与全局变量相同的变量进行操作,但是两个变量仅仅名字相同,
在函数里修改全局变量,python会以屏蔽(Shadowing)的方式保护全局变量
global 标识
在函数体里是把xxx定义为全局变量
# 利用global标识 在函数里更改全局变量 张三变李四
# 全局变量
name = '张三'
# 定义函数,在函数里更改全局变量
def changeName():
global name
name = '李四'
# 未调用函数
print(name)
# 输出:张三
# 调用函数
changeName()
print(name)
# 输出:李四