python 函数

#1.python 函数的参数传递:
不可变类型:传不可变对象(‘’值传递‘’),如 整数、字符串、元组。
可变类型:传可变对象(‘’引用传递‘’),如 列表,字典。
#2.关键字参数
函数调用使用关键字参数来确定传入的参数值,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。 如

def fun(month,day):
    print(str(month)+"/"+str(day))
fun(day=1,month=12)

3.不定长参数
若需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,,声明时不会命名。

def function([参数,],*arg)  
或 def function([参数,],**arg)  
或 def function([参数,],*arg,**arg) 

  • 加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。也可以不向函数传递未命名的变量。
def fcn(b,*a):
    print(b)
for i in a:
	print(i)
fcn(1,32,43)
输出:1
     32
     43
  • 加了两个星号 ** 的参数会以字典的形式导入。
def fcn(b,**arg):
    print(b)
    for u,v in arg.items():
        print(u,v,sep=":")fcn(1,c=32,d=43)
输出:1
     c:32
     d:43
def fcn(b,*a,**arg,):
    print(b)
    for u,v in arg.items():
        print(u,v,sep=":")
    for i in a:
        print(i)
fcn(1,2,3,c=32,d=43 
结果
1
c:32
d:43
2
3

#三.global 和 nonlocal关键字
改变变量作用域

a=3
def fcn():
	global a
	print(a)





def fcn():
	nonlocal a
	a=1
	return
print(a)






#四.函数重载可通过默认参数来实现

def __init__(nane=None,age=None):

#五.函数名可做函数的参数

def fx(a,f):
    print(f(a))
fx(-1,abs)

def lf(a,f):
    for i in f:
        print(i(a))
lf(-2.3,[abs,int])


#六.匿名函数
lambda 参数表:表达式
用法:
1将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
add=lambda x,y:x+y,则add函数执行加法
2将lambda函数作为参数传递给其他函数。

  • 如若函数f(x)有参数,当按按钮要执行f(x)
    可写b=Button(root,…,command=lambda:f(x) 如
    f- ilter函数。此时lambda函数用于指定过滤列表元素的条件。
    filter(lambda x: x % 3 == 0, [1, 2, 3]) 结果是[3]。
  • map函数。例如map(lambda x: x+1, [1, 2,3]) 结果[2, 3, 4]。

#七.map函数
map(function,list1/tuple1<,list2/tuple2>) 若函数只有一个参数,只需一个列表/元祖。若有两个参数,需要两个列表/元祖 如

a=map(abs,[-1,3,-3])
a=map(min,(1,3,3),(43,1,5))

map函数返回的是迭代器,若要打印值。

a1=list(a)
print(a1)
#错误: print(list(a))第一次会返回结果,但指针已经变了位置,第二次就无法获得想要的结果了

#八 sorted 函数
sorted(iterable[, cmp[, key[, reverse]]])
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

L=[(‘b’,2),(‘a’,1),(‘c’,3),(‘d’,4)]
a= sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数 [(‘a’, 1), (‘b’, 2), (‘c’, 3), (‘d’, 4)]
b=sorted(L, key=lambda x:x[1]) # 利用key [(‘a’, 1), (‘b’, 2), (‘c’, 3), (‘d’, 4)]

#九 reduce()函数
reduce()函数接收的参数和 map(function,list)类似。但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,函数f每次的计算结果与list中下个元素一同作为函数f的参数。

list=[1, 3, 5, 7, 9]
functiontools.reduce(lambda x,y:x+y,list)

先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;

list=[1, 3, 5, 7, 9]
functiontools.reduce(lambda x,y:x/y,list)#连除

十:真正随机数

from random import random,seed
from time import time
seed(time())
for i in range(1,10000):
    x = random()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值