一、定义函数
函数:把功能封装起来
执行顺序:逐行扫描代码
如果不主动调用函数,函数不会执行
变量在本质上就是一个占位符。变量可以用x,也可以用别的符号,比如y,z,k,i,j…,甚至用alpha,beta这样的字母组合也可以。
1、空函数
定义一个什么事也不做的空函数,可以用 pass 语句;
pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来
2、函数返回值
所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果.
没有返回值,默认返回None
3、定义函数的格式
def 函数名(参数1,参数2,...,参数n):
函数体(语句块)
(1)函数名的命名规则要符合python中的命名要求。一般用小写字母和单下划线、数字等组合
匈牙利命名法(sUserName), 驼峰式大小写(userName), 帕斯卡命名法(UserName)
(2)def是定义函数的关键词,这个简写来自英文单词define
(3)函数名后面是圆括号,括号里面,可以有参数列表,也可以没有参数
(4)千万不要忘记了括号后面的冒号
(5)函数体(语句块),相对于def缩进,按照python习惯,缩进四个空格
##定义函数
def say_hello():
print('hello1')
print('hello2')
##函数的调用
say_hello()
def sum_2_sum():
num1 = 10
num2 = 20
result = num1 + num2
print('%d + %d = %d' % (num1, num2, result))
sum_2_sum()
4、函数的优势
从理论上说,不用函数,也能够编程,我们在前面已经写了程序,就没有写函数,当然,用python的内建函数姑且不算了。现在之所以使用函数,主要是:
- 降低编程的难度(分而治之的思想)
- 代码重用。避免了重复劳动,提供了工作效率。
二、参数
1、局部变量
局部变量,就是在函数内部定义的变量
不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用
2、全局变量
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量。
在函数外边定义的变量叫做全局变量
全局变量能够在所有的函数中进行访问
如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错
如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的
小技巧: 强龙不压地头蛇(就近原则)
3、形参与实参
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”
1)位置参数:形参和实参个数必须保持一致
def getInfo(name,age): ##按照位置传参
print(name,age)
getInfo('westos',11)
getInfo(11,'westos')
getInfo(age=11,name='westos')
2)默认参数:形参和实参个数可以不一致
def mypow(x,y=2):
print(x ** y)
mypow(4) #没有传参时,用默认的参数
mypow(2,3)
mypow(2,5)
3)可变参数:可以接受多个参数
def mysum(*a):
sum = 0
for item in a:
sum += item
print(sum)
mysum(1,2,3,4,5,6)
4)关键子参数
def getStuInfo(name,age,**kwargs):
"""
**kwargs是一个字典,可以传递任意多的key-value
:param name:
:param age:
:param kwargs:
:return:
"""
print(name,age)
print(kwargs)
getStuInfo('westos','19',hobbies=['coding','devops'],gender='female',eat='apple')