python学习 函数详解编程语言

# -*- 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"};#字典 
 
 
#将元组 作为参数 
def func_01(x,y,z): 
    print(x,y,z); 
 
func_01(*arr);#a b c 
 
#默认参数 
def func_02(name="张三",age=12): 
    print("name : %s " % name); 
    print("age : %s " % age); 
 
func_02(); #在不传值得时候 使用默认值   name : 张三 
func_02("李四",30);#name : 李四 
 
#传递字典  函数额参数 要与 字典的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

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论