函数
定义函数
def hello():
print ‘hello’
print ‘world’
定义好一个函数后函数不会自动执行函数体里面的内容
需要使用时,要调用函数
Hello()
函数里面嵌套函数
函数里面嵌套函数
def fentiao():
print("is fentiao......")
def westos():
print("westos")
fentiao()
函数参数的使用
在函数名后的小括号内填写 参数
多个参数之间用,分隔
定义函数时的变量,叫形参 形参可以任意起名字
def sum_2_sum(num1,num2):
"""
:param num1:
:param num2:
:return:
"""
result = num1 + num2
print '%d + %d = %d' %(num1,num2,result)
# 在调用函数的时候
# 在调用函数时传递得参数称为实参(真实的数据信息)
sum_2_sum(5,20)
函数动态添加成员
def fun():
print(fun.x)
# fun()
# 动态添加
fun.x = 3
fun()
# 动态删除
del fun.x
fun()
函数的参数
参数: 形参,实参
形参:位置参数,默认参数,可变参数,关键字参数
位置参数:形参和实参必须保持一致
def getInfo(name,age):
print name,age
getInfo(age=12,name='westos')
# 默认参数:形参和实参的个数可以不一致
def mypow(x,y=2):
"""
求x的y次方,y的值默认为2
:param x:
:param y:
:return:
"""
print x**y
mypow(4)
# 默认形参可以改变
mypow(4,3)
# 可变参数
def mysum(*agrs):
"""
*args:是可变参数
args:是元组类型数据
args:名字可变(因为是形参 名字可变)
:param agrs:
:return:
"""
print agrs
sum = 0
for item in agrs:
sum += item
print sum
# 对list tuple set 解包时,只需要在变量前加 *
nums = [1,2,3,4,66,78]
nums1 =(1,2,3,4,5)
nums2 = {1,2,3}
# *nums:解包
mysum(*nums2)
#mysum(1,2,3,4,5)
# 4.关键字参数
def getStuInfo(name,age,**kwargs):
"""
**kwargs:是一个字典;可以传递任意多的key-value对
:param name:
:param age:
:param kwargs:
:return:
"""
print name,age
print kwargs
getStuInfo('westos',18,hobbies=['code','running'],gender ='female')
# 如果要对字典解包, 一个星号,获取所有的key值;
d = dict(a=1, b=2)
print(*d)
getStuInfo("westos", 12, **d)
函数的返回值
返回值:函数运算的结果,还需要进一步操作时,给一个返回值;
Return用来返回函数执行结果的,如果没有返回,默认为None(null,none);
Python可以间接返回多个值;原理:返回的是一个元组,将来对元组进行解包.
一旦遇到return,函数执行结束,后面的代码不会执行,(yield)
def mypow(x, y=2):
"""
求x的y次方, y默认值为2
:param x:
:param y:
"""
return x**y, x+y
# print(mypow(4))
# a = mypow(4,3)
# print(a+100)
对元组进行解包
a, b = mypow(3)
print(a,b)
变量的作用域:
局部变量:在函数内部定义的普通变量,只在函数内部起作用,函数执行结束,变量会自动删除。
-可变:函数内部改变会影响外部变量的值
-不可变:函数内部改变不会影响外部变量的值
全局变量:
global
a = 1
print("outside:", id(a))
def fun():
global a # 声明a为全局变量
a = 5
print("inside", id(a))
fun()
print(a)
print(id(a))
# a = [1,2,3,4]
# print("outside:", id(a))
# def fun():
# a.append(5)
# print("inside", id(a))
# fun()
# print(a)
函数参数数据类型的判断
isinstance(1, int)
Out[4]: True
isinstance(1.0, int)
Out[5]: False
isinstance(1, (int, float))
Out[6]: True
isinstance(True, (int, float))
Out[7]: True
isinstance([1,2,3], (int, float))
Out[8]: False
匿名函数
匿名函数定规则:lambda 形参:返回值
def fun(*args,**kwargs):
return args,kwargs
Pri nt lambda *args
# 问题描述: 有一个整数列表(10个元素), 要求调整元素顺序,
# 把所有的奇数放在前面, 偶数放在后面,
#
import random
li = [random.randint(1, 10) for i in range(10)]
print(li)
print(sorted(li, key=lambda x: 1 if x % 2 == 0 else 0))
print(sorted(li, key=lambda x: x%2==0))