1.函数
定义:函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
作用:函数的作用
使用:函数必须先创建才可以使用,该过程称为函数定义,函数创建后可以使用,使用过程称为函数调用
函数定义与调用:
1) >>> def 函数名(形参1,形参2): # 定义
... 函数体
函数名(实参1,实参2) #调用
关键字:
help("keywords") #查看Python系统关键字有哪些
import keyword
print(keyword.kwlist)
False def if
None del import
True elif in
and else is
as except lambda
assert finally nonlocal
break for not
class from or
continue global pass
函数参数与作用域:
位置参数
位置参数又称为非关键字参数
位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
def print_info(info):
print(info)
print_info('hello,sara')
运行结果:
hello,sara
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def print_info(info1, info2):
print(info1, info2)
print_info(info2='信息二', info1='信息一')
运行结果:
信息一 信息二
默认参数
用函数时,如果没有传递参数,则会使用默认参数。
def print_info(name, age=20):
print(name, age)
print_info('Tom', 10)
print_info('sara')
运行结果:
Tom 10
sara 20
不定长参数
加了星号”*“的变量args会存放所有未命名的变量参数,args为元组 ;而加”*“的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
def print_info(name, *args, **kwargs):
print(name, args, kwargs)
print_info('sara', 'java', 'c', 'bigdata', age=23, height=160, address='beijing')
运行结果:
sara ('java', 'c', 'bigdata') {'age': 23, 'height': 160, 'address': 'beijing'}
变量作用域LEGB
-
L:locals 函数内的名称空间,包括局部变量和实参-
-
E:enclosing 外部嵌套函数的名称空间,即相邻的上一层,打个比方说:func2中没有age变量则会去func里找这个-
-
G:globals 全局变量-
-
B:builtins 内置模块的名称空间
查找顺序:先去local中查找变量,再去全局,再去buil-In变量查找
pass_line = 60 # pass_line: global
def func(val): # val: local
pass_line = 90 # pass_line: local
if val >= pass_line:
print("pass")
else:
print("failed")
def fun_in():
print(val) # val: enclosing
return fun_in
def maximum(val1, val2):
return max(val1, val2) # max(): build-in
函数返回值
函数根据有没有参数,有没有返回值,可以相互组合,一共有4种
无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值
无参数,无返回值的函数
def printMenu():
print("--------------------------")
print(" 西府岐山面")
print(" 旺旺小厨")
print(" 羊肉面")
print("--------------------------")
printMenu()
运行结果:
--------------------------
西府岐山面
旺旺小厨
羊肉面
--------------------------
无参数,有返回值的函数
# 获取温度
def getTemperature():
return 18
temperature = getTemperature()
print('当前的温度为:%d'%temperature)
运行结果:
当前的温度为:18
有参数,无返回值的函数
此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数
有参数,有返回值的函数
此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数
# 计算1~num的累积和
def SUM(num):
result = 0
i = 1
while i<=num:
result = result + i
i+=1
return result
result = SUM(100)
print('1~100的累积和为:%d'%result)
作业
实现random.sample方法
**random.sample()**可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。
import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list1= random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回
print (list1)
print (list) #原有序列并没有改变
运行结果:
[9, 3, 6, 10, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
实现Max方法
max() 函数返回给定参数的最大值,参数可以为序列。
语法
max(x,y,z,…)
print (("max(10, 100, 1000) : "), max(10, 100, 1000))
运行结果:
max(10, 100, 1000) : 1000
实现判断两个字符串是否相等的方法
Python的字符串比较与Java类似,也需要一个比较函数,而不能用==符号。用cmp()方法来比较两个对象,相等返回 0 ,前大于后,返回 1,小于返回 -1.
import operator as op
print(op.eq("123","123456"))
print(op.eq("123","123"))
运行结果:
False
True
str1="haha"
str2="heihei"
if (str1==str2):
print("相等")
else:
print("不相等")
运行结果:
不相等