zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python学习 函数详解编程语言

Python学习编程语言 详解 函数
2023-06-13 09:20:47 时间
# -*- config=utf-8 -*- 

#################################### 函数 ################################## 

def func_02(a,b):# a b :形式参数 

 if a b: 

 print("a 大于 b") 

 else: 

 print("b大于等于a"); 

func_02(2,4);# 2 4 :实际参数 

###################################### 形参数设置默认值 ######################################### 

def mashine(x=0,y=0):#x=0 表示设置默认值 

 print(x,"+" ,y,"计算结果:",x+y); 

mashine();#使用默认值 0 + 0 计算结果: 0 

mashine(21,34);#传值 21 + 34 计算结果: 55 

mashine(21);# 不指定参数 21 + 0 计算结果: 21 

mashine(y=21);# 指定参数传值 0 + 21 计算结果: 21 

##########################################变量的作用域######################################### 

x="I am global var";#全局变量 

def func_03(): 

 b=200;#局部变量 

 print(x,b); 

func_03(); 

# 使用 global 将 函数内部的变量 强制 声明为全局变量 函数 必须先被调用 

m="C-D-E"; 

def func_04(): 

 global m; 

 m="A-B-C"; 

 print(m); 

func_04();#A-B-C 

print(m);#A-B-C 函数必须先调用 

#######################################函数的返回值 ##################################### 

# 1. return 返回函数执行结果 并 终止函数 

# 2、默认 返回None 

def func_05(x,y): 

 print(x+y); 

 return x+y; 

sum=func_05(12,23);#接收函数处理的结果 

print(sum);


# -*- config=utf-8 -*- 

##################################### 多类型参数 ######################## 

print("%s : %s " % (A,B)); #格式化输出 A : B 

arr=(a,b,c);#元组 

list=list(range(10));#元组 

map={"a":"A","b":"B","c":"C"};#字典 


#传递字典 函数额参数 要与 字典的key值对应 func_02(age=50,name="Kb"); #name : Kb age : 50 map2={"age":40,"name":"王五"}; func_02(**map2);#name : 王五 age : 40 map2["age"]=41; func_02(**map2); #age : 41 ###############################处理传递的多余参数######################## # *args元组 存储 多余的实参 def func_03(x,*args): print(x); print(args); func_03(1); # 1 ()元组 func_03(1,"a","C",4); # 1 (a, C, 4)元组 # 以字典存储 key=value 类型多余的实参 def func_04(x,*agrs,**kwargs): print(x); print(agrs); print(kwargs); func_04(2,"F","D","H",a="A",c="C"); #2 (F, D, H) {c: C, a: A} func_04(2,"F","D","H",x="A",c="C");# 这样是 有问题的 因为 x 传递的多次

 

#####################################lambda(匿名)函数 ################################### 

#lambda 函数是一种快速定义单行的最小函数,是从Lisp借鉴的,可以用在任何需要函数的地方 

#Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字 

def func_05(x,y): 

 return x*y; 

g=lambda x,y :x*y; #t通过lambda 定义 一个匿名函数 付给g 

print(g);# function lambda at 0x000000000104C6A8 返回的是一个函数对象 

print(g(12,34));#408 

#Python中的reduce 

#python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作: 

#用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作, 

#得到的结果再与第三个数据用func()函数运算,最后得到一个结果。 

#在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce 

from functools import reduce; 

# 求 5 的阶乘 5*4*3*2*1 

def func_06(x,y): 

 return x*y; 

fh=list(range(1,6)); 

print(fh); 

print(reduce(func_06,fh)); #120 

print( reduce(lambda x,y:x*y,fh) ); #120 使用lambda 函数 处理 

 

# -*- config=utf-8 -*- 

################################ 通过字典实现 switch ############################## 

from __future__ import division 

def operator(o,x,y): 

 if o=="+": 

 return x+y; 

 elif o=="-": 

 return x-y; 

 elif o=="*": 

 return x*y; 

 elif o=="/": 

 return x/y; 

 else: 

 pass; 

print(operator("+",12,23)); 

#将以上业务转为 switch 

# lambda 函数也可以是普通函数 

opera={ 

 "+":lambda x,y:x+y, 

 "-":lambda x,y:x-y, 

 "*":lambda x,y:x*y, 

 "/":lambda x,y:x/y 

def findOper(x,o,y): 

 return opera.get(o)(x,y); # opera.get("+") 返回的是 一个函数 函数后面加() 表示调用函数 

print(findOper(12,"-",45));

 

# -*- config=utf-8 -*- 

################################ 内置函数 ############################## 

print(abs(-10)); #返回一个数的绝对值 

print(divmod(12,5)); #返回两个数的 商 2 和余数 2 

print(pow(2,3)); # 8 2的3次方 

print(round(20,2)); 

L=[1,23,43,16,23,46]; 


#该函数在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以后版本中被重新添加。 print(callable(min));# 判断函数是否可被调用 print(hasattr(min, __call__));#3.0之后 print(type(L)); # class list 查看数据类型 print(isinstance(L,list));#判断 数据类型 返回 True 或 false # print(cmp("1","2")); 这个函数 在3.0 后取消了 print(list(range (10)));#生成 一个列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #######################################字符串 处理的内置函数#################################### str="hello Word"; print(str.capitalize());#字符串首字母大写 Hello word print(str.replace(" ","")); #字符替换 helloWord print(str.replace("l","L",1)); # heLlo Word strIp="192.168.6.223"; print(strIp.split("."));# 切割字符串 [192, 168, 6, 223] print(strIp.split(".",2)); # 参数2 表示切割次数 [192, 168, 6.223] ###########################序列处理函数####################################### L=[1,23,43,16,23,46]; print(max(L)); #返回一个序列的最大值 print(min(L)); #返回一个序列的最小值 print(len(L)); #返回序列的长度 #filter() 函数 #根据 定义的规则 过滤序列 生成一个迭代器 可以使用List()函数将结果转化为列表 def func_01(x): if x 16: return True; print(list(filter(func_01,L))); #[23, 43, 23, 46] #zip() 函数 #将 多个 序列按照一一对应的关系 转为一个大的列表迭代器 如果有些数据没有对应 则该信息就不存在了 name=["milo","zou","tom"]; age=[12,34,45]; tel=["12312","21312"] print(list(zip(name,age,tel)));#[(milo, 12, 12312), (zou, 34, 21312)] tel 没有一一对应所以tom这条信息就不存在了 #map()函数 #根据定义好的规则 处理多个序列 返回一个迭代器 使用 list() 转换为 列表 aa=[1,2,3,4]; bb=[5,6,7,8]; def func_02(x,y): return x * y; print(list(map(func_02,aa,bb)));#[5, 12, 21, 32] #reduce 函数 #根据定义的规则 以次处理列表中的每个元素 from functools import reduce;#3.5 需要引入 #计算 1加 到100 L=list(range(1,101)); print(reduce(lambda x,y:x+y,L));#5050

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16297.html

cjavapython