python(3)模块、函数式 、三元运

发布时间:2019-06-23 08:43:49编辑:auto阅读(1767)


    一、模块和模块的常用方法

    __name__

    判断是否为主文件

    >>> print __name__   #判断是否是主文件,如果是主文件就返回_main_
    __main__

    __file__

    返回当前.py文件的路径

    cat /root/1.py
    print __file__
    测试:python 1.py 
    /root/1.py

    __doc__

    对模块的一个描述

    二、函数

    简单函数测试

    cat 2.py
    #!/bin/env python 
    def  bro():                #定义函数名为bro
        print  'hello'
        heo()                #调用hro函数
    def  hro():                #定义函数名为hro
        print 'world'
    bro()                    #执行bro函数
    测试:python 2.py
    hello
    world

    1.概念:

    ·在Python中采用def关键字进行函数的定义

    ·函数的参数分为普通参数,默认参数,指定参数

    ·函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

    2.格式

    def 函数名(参数列表): 
        函数体

    3.实例:

     (1)定义函数并调用

    代码:
    def foo(name):           #定义name为形参
       print name,'去砍柴'      #打印变量,和动作
    foo('张三')            #执行函数,括号内为实参
    foo('赵四')
    结果:
    张三 去砍柴
    赵四 去砍柴

      (2)用函数写登陆小程序

    代码:
    #定义函数
    def login(username):          #username这里为形参
        if username == 'aaa':    
            print 'ok'
        else:
            print 'no'
    #执行函数       
    user = raw_input('请输入用户名') 
    login(user)               #执行函数

    返回值:根据返回值做相应的操作 

    1.实例

     (1)根据返回值做相应操作 

    代码
    #定义函数
    def login(username):         
        if username == 'aaa':      #判断用户名是否为aaa
            return 'ok'        #如果是aaa,则返回值为'ok'
        else:
            return 'no'        #否则返回值为'no'  
    #调用函数    
    user = raw_input('请输入用户米:')
    res = login(user)             #接受返回值,定义执行函数的过程为res,res随便写
    if  res == 'ok':            #如果返回值是OK
        print '成功'               
    else:                    #否则
        print '失败'

    函数的默认参数:定义默认参数,如果下面调用函数时不指定参数,默认就是这个参数,默认参数可以无限定义

    1.实例:

     (1)定义两个参数和一个默认参数     

    代码:               
    #定义函数
    def foo(name,action='去砍柴'):   #第一个参数为内容,第二个参数的默认参数
        print name,action
    #调用函数
    foo('zhangsan')           #调用函数,输入第一个参数为zhangsan
    foo('lisi','去吃饭')         #调用函数,输入一个参数和第二个参数
    结果:
    zhangsan 去砍柴
    lisi 去吃饭

     (2)定义函数,打印多个传参         #把所有参数封装成列表或者序列

    代码:
    #定义函数
    def  show(*arg):          #加*是所有的意思
        for item in arg:      #这里是随便定义一个,也可以写别的
            print item
    #调用函数
    show('zhangsan','lisi')
    结果:
    zhangsan
    lisi

    (3)定义函数,打印多个传参        #把所有参数封装成字典,得加个字典

    代码
    #定义函数
    def  show(**kargs):
        for item in kargs.items():
            print item
    #调用函数
    show(name='zhangsan',age='lisi')
    结果:
    ('age', 'lisi')
    ('name', 'zhangsan')

    (4)定义函数,传参字典,并打印

    代码:
    #定义函数
    def  show(**kargs):
        for item in kargs.items():
            print item
    #调用函数
    usr_dict = {'k1':123,'k2':456}
    show(**usr_dict)                     #传参字典必须加两个*
    结果:
    ('k2', 456)
    ('k1', 123)

    三、三元运算

    1.举例:

     (1)如果1>3,就把gt赋值给result,否则把lt赋值给result

    代码
    result =  'gt'  if 1>3  else  'lt'
    print resule
    结果:
    lt

    四、lambda

    用途:比较简单的函数定义

    举例:

     (1)

    代码:
    temp = lambda x,y:x+y    #第一个x,y是参数,第二个x+y表示两个参数相加
    print temp(4,4)          #4+4=8,temp负责接受参数
    结果:
    8

    五、序列化和json

    序列化:把一个对象(列表、字典等)以python特殊二进制的方式加密一下,这个过程叫做序列化

         把一个对象序列化之后还可以反序列化

    1.举例:

     (1)把一个list转成str

    语法:pickle.dumps(obj)

    代码
    import pickle 
    a = ['zhangsan',11,22,'lisi']
    dumpsed = pickle.dumps(a)
    print dumpsed 
    print type(a)
    结果
    (lp0
    S'zhangsan'
    p1
    aI11
    aI22
    aS'lisi'
    p2
    a.
    <type 'list'>

     (2)把str转回list

    语法:pickle.loads(str)

    代码
    import pickle 
    a = ['zhangsan',11,22,'lisi']
    dumpsed = pickle.dumps(a)         #a是list,转成str,赋值给dumpsed
    loadsed = pickle.loads(dumpsed)   #dumpsed是str转成list,赋值给loadsed 
    print loadsed 
    print  type(loadsed)
    结果
    ['zhangsan', 11, 22, 'lisi']
    <type 'list'>

     (3)把list转成str并存到指定文件中,不打印

    代码:
    import pickle 
    a = ['zhangsan',11,22,'lisi']     
    pickle.dump(a,open('D:/temp.pk','w'))
    结果
    打开D:/temp.pk 
    (lp0
    S'zhangsan'
    p1
    aI11
    aI22
    aS'lisi'
    p2
    a.

      (4)把文件中的str转成list,并打印

    代码
    import pickle 
    result = pickle.load(open('D:/temp.pk','r'))  打开一个文件并把str转成list赋值给result
    print  result 
    print type(result)
    结果
    ['zhangsan', 11, 22, 'lisi']
    <type 'list'>

    六、正则表达式

    1.正则表达式是re模块

    (1)re.match:从开头开始匹配,如果开头没有就不继续向下匹配

    代码
    import re
    a = re.match('\d+','123abc123')     #‘\d+’是匹配数字的意思,后边是字符串
    print a.group()              #.group是把结果拿出来(这里是匹配到的123)
    结果
    123

    (2)re.search:从整个字符串开始匹配,只要有符合就OK,就不继续往下匹配

    代码
    import re
    a = re.search('\d+','456abc123')
    print a.group()
    结果
    456

    (3)re.findall:找出所有匹配的,不想match和search找到一个匹配的之后就不往下找

    代码
    import re
    a = re.findall('\d+','456abc123def789')
    print a
    结果
    ['456', '123', '789']

    (4)re.compile:先编译,然后利用findall查找,跟findall效果一样,但效率高

    代码
    import re
    a = re.compile('\d+')
    print a.findall('456abc123def789')
    结果
    ['456', '123', '789']

    2.正则表达式常用格式

    字符:

    \d:数字

    \w:‘_’, ‘-’,等字符

    \t:制表符

    .:所有字符

    次数:

    *:大于等于0

    +:大于等于1

    ?:0或者1

    {m}:次数,比如让a出现6次

    {m,n}:范围,比如出现3-5次之间的

    七、time模块

    打印当前时间:

    代码
    import time
    print time.strftime('%Y-%m-%d ')
    结果
    2015-12-22






关键字