zoukankan      html  css  js  c++  java
  • python 函数,内置函数

    1.函数

    1.1  定义函数

    ·函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()

    ·任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

    ·函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

    ·函数内容以冒号起始,并且缩进。

    ·return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    1.2  函数参数

    【python 传参 传递的是一个引用】

    ·普通参数

    def userinfo(name,userid):
        print(name,userid)
    userinfo('xx',20)
    
    #xx 20

    ·默认参数(默认参数必须放在参数列表最后)

    
    
    def userinfo(name,userid,status='ok'):
        print(name,userid,status)
    userinfo('xx',20)
    userinfo('xx',20,'error')
    #xx 20 ok
    #xx 20 error

    ·动态参数     * 默认将传入的元素,全部放在元祖中  ** 默认将传入的元素,全部放到字典里

    def userinfo(*args):       #参数是元祖或者列表
        print(args)
    l_list = [1,2,3]
    userinfo(l_list)
    userinfo(*l_list)
    #([1, 2, 3],)
    #(1, 2, 3)
    def userinfo(**args):        #参数为字典
        print(args)
    dic = {"name":'xx',"age":20}
    userinfo(name='xx')
    userinfo(**dic)
    userinfo(name='xx',age=30)
    
    #{'name': 'xx'}
    #{'age': 20, 'name': 'xx'}
    #{'age': 30, 'name': 'xx'}
    def userinfo(*args,**kwargs):        #万能参数   
        print(args,kwargs)
    dic = {"name":'xx',"age":20}
    l_list = [1,2,3]
    userinfo(*l_list,**dic)
    #(1, 2, 3) {'name': 'xx', 'age': 20}            

    1.3  变量作用域

    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加 。

    想要改变函数外的全局变量,需要加global参数。

    AGE =20
    def userinfo():
        AGE = 18
        print(AGE)
    userinfo()
    print(AGE)
    #18
    #20
    AGE =20
    def userinfo():
        global AGE   #改变全局变量
        AGE = 18
        print(AGE)
    userinfo()
    print(AGE)
    #18
    #18

    虽然函数内不能改变全局变量的值,但是假如变量为列表、字典等,可以修改元素,但是不能删除重建

    Info = [1,2]
    dict_info = {
        "age":18,
        "name":"caesary",
    }
    
    def testfun():
        Info.append(3)
        dict_info["addr"] = "HLJ"
        print(Info)
        print(dict_info)
    
    testfun()
    print(Info)
    print(dict_info)
    #[1, 2, 3]
    #{'age': 18, 'name': 'caesary', 'addr': 'HLJ'}
    #[1, 2, 3]
    #{'age': 18, 'name': 'caesary', 'addr': 'HLJ'}

    2.内置函数

    abs()  函数返回(数字)的绝对值

    all()  如果()里的所有元素不为0、''、False,all()返回True,否则返回False

    >>> all(['a', 'b', 'c', 'd'])  #列表list,元素都不为空或0
    True
    >>> all(['a', 'b', '', 'd'])  #列表list,存在一个为空的元素
    False
    >>> all([0, 1,2, 3])  #列表list,存在一个为0的元素
    False  
    >>> all(('a', 'b', 'c', 'd'))  #元组tuple,元素都不为空或0
    True
    >>> all(('a', 'b', '', 'd'))  #元组tuple,存在一个为空的元素
    False
    >>> all((0, 1,2, 3))  #元组tuple,存在一个为0的元素
    False
    >>> all([]) # 空列表
    True
    >>> all(()) # 空元组
    True

    any()  如果()里的任何元素不为0、''、False,any()返回True。如果iterable为空,返回False

    >>> any(['a', 'b', 'c', 'd'])  #列表list,元素都不为空或0
    True
    >>> any(['a', 'b', '', 'd'])  #列表list,存在一个为空的元素
    True
    >>> any([0, '', False])  #列表list,元素全为0,'',false
    False
    >>> any(('a', 'b', 'c', 'd'))  #元组tuple,元素都不为空或0
    True
    >>> any(('a', 'b', '', 'd'))  #元组tuple,存在一个为空的元素
    True
    >>> any((0, '', False))  #元组tuple,元素全为0,'',false
    False  
    >>> any([]) # 空列表
    False
    >>> any(()) # 空元组
    False
    bin()  十进制转二进制
    oct() 十进制转八进制
    hex() 十进制转十六进制
    print(bin(10),oct(10),hex(10))
    #0b1010 0o12 0xa

    bytes(字符串,编码格式)

    一个字节8位

    utf-8 一个汉字3个字节

    gbk   一个汉字2个字节

    n = '测试'
    m = bytes(n,encoding="utf-8")
    m1 = bytes(n,encoding="gbk")
    print(m,m1)
    print(str(bytes(n,encoding="utf-8"),encoding="utf-8"))   #字节转化成字符串
    #b'\xe6\xb5\x8b\xe8\xaf\x95' b'\xb2\xe2\xca\xd4'
    #测试

    format()       格式化输出

    s1 = 'i am {0},age {1}'.format('xx',20)
    print(s1)
    s2 = 'i am {0},age {1}'.format(*['xx',21])
    print(s2)
    s3 = 'i am {name},age {age}'.format(name='xx',age=22)
    print(s3)
    dic = {'name':'xx','age':23}
    s4 = 'i am {name},age {age}'.format(**dic)
    print(s4)
    #i am xx,age 20
    #i am xx,age 21
    #i am xx,age 22
    #i am xx,age 23
     
  • 相关阅读:
    转自苦大师:移动测试Appium之API手册
    怨念与发飙
    Asp.Net 2.0新特性
    汉字是最优美的文字
    加入cnblog留念
    Thrift之TProtocol类体系原理及源码详细解析之其他协议类和总结
    Thrift之TProtocol类体系原理及源码详细解析之二进制协议类TBinaryProtocolT(TBinaryProtocol)
    linux内核bug问题排查过程详细报告
    Thrift之TProtocol类体系原理及源码详细解析之紧凑协议类TCompactProtocolT(TCompactProtocol)
    Thrift之TProcess类体系原理及源码详细解析
  • 原文地址:https://www.cnblogs.com/xxby/p/5537873.html
Copyright © 2011-2022 走看看