• 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
  • 相关阅读:
    全排列算法(java实现) 组合算法实现
    int -2147483648 ----- 2147483647
    Gradel 多渠道打包 代码混淆
    Android开发环境搭建
    自定义相册、九宫格显示图片
    新技术:retrofit
    新技术:dagger
    主流架构:MVVP
    GreenDao3.2的使用
    第三方框架:EventBus
  • 原文地址:https://www.cnblogs.com/jalja/p/5559249.html
Copyright © 2020-2023  润新知