• 函数、模块


    一.函数

    1.变量

    #变量名全部为大写时,就是一个常量
    FILE_NAME='gdgd' #常量的值是不会变的

    name='小黑'   #全局变量
    # 局部变量
    # 在函数里边定义的变量都是局部变量,出了函数之后就不能用了
    # 全局变量
    # 在文件最上边定义的这个变量,就是全局变量

    def hh():
    global name #此处为局部变量。用global声明一下,可以将全局变量修改,一般不用,影响内存;字典和list这种可变的变量,不需要global来声明,就可以直接改了
    name='小白'
    print(name)
    hh()    #结果是小白
    print(name) #结果是小白
    ******************************************************************************
    2.函数传参
    # 可变参数(参数组)   参数非必填,参数个数没有限制,最后的结果存放在元组当中
    def send_mail(*email):
    print(email)
    send_mail('fsfsfs')
    send_mail('fdfdfd','dsdssds','rrerer')
    send_mail()

    def run(name,age=28,*args):
    print(name)
    print(age)   
    print('args..',args)
    run('aa',25,'北京','fafsa')
    结果:
    aa
    25
    args..北京 fafsa

    def st():
    name='abc'
    sex='男'
    age=18
    return name,age,sex #return多个值时,将所有返回值放到一个数组中
    res=st()
    print(res) (‘abc’,‘男’,18)

    # 关键字参数
    def my(**info): #非必填,没有限制参数个数,将结果放到一个字典里边
    print(info)
    my(name='fadada',sex='男',age=18)
    my()
    my(type='car',a=1,c=1)


    #位置参数(必填参数),默认值参数(不必填),可变参数(不必填的,不限制参数个数)
    def op_db(ip,port,db,user,passwd,sql):
    print('连接mysql操作数据库')
    pass

    op_db('192.1681.12','xxx',3306,'sdf','sdf','sdf')
    op_db('192.169.1.12',3306,user='root',passwd='12345',db='jxz',sql='select')

    3.递归:就是函数自己调用自己,类似于循环,但是递归有次数限制,最大递归次数为999次,超过了这个限制就会报错,所有用递归的话,必须要有一个明确的结束条件


    4.列表推导式,列表生成式
    res=[12,45,88,2,3,6]
    res=[str(i).zfill(2) for i in res] 对res列表进行遍历,同时对遍历的结果进行处理

    5.内置函数:
           print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真        
            print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
            print(bin(10))#十进制转二进制
            print(bool('s'))#把一个对象转换成布尔类型
            print(bytearray('abcde',encoding='utf-8'))#把字符串变成一个可修改的bytes
            print(callable('aa'))#判断传入的对象是否可调用
            print(chr(10))#打印数字对应的ascii
            print(ord('b'))#打印字符串对应的ascii码
            print(dict(a=1,b=2))#转换字典
            print(dir(1))#打印传入对象的可调用方法
            print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
            print(exec('def a():pass'))#执行python代码
            print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
            print(map(lambda x:x>5,[1,2,3,4,5,6]))
            print(frozenset({1,2,3,3}))#定义一个不可修改的集合
            print(globals())#返回程序内所有的变量,返回的是一个字典
            print(locals())#返回局部变量
            print(hash('aaa'))#把一个字符串哈希成一个数字
            print(hex(111))#数字转成16进制
            print(max(111,12))#取最大值
            print(oct(111))#把数字转换成8进制
            print(round(11.11,2))#取几位小数
            print(sorted([2,31,34,6,1,23,4]))#排序
            dic={1:2,3:4,5:6,7:8}
            print(sorted(dic.items()))#按照字典的key排序
            print(sorted(dic.items(),key=lambda x:x[1]))#按照字典的value排序
            __import__('decorator')#导入一个模块
     
     rang(1,1000,2) 从1到1000,步长为2

    stus=['放到','方式','如风达','发顺丰']
    stus=['发顺丰','苟富贵','第三方','苟富贵']
    for index,s in enumerate(stus):
    print(index,s) #同时循环取列表中的内容和下标,同时枚举函数不仅仅适用于list,字符串,数字,汉字都可以

    sex=['男','男','女','女']
    age=[1,2,3,6]
    for name,se,ag in zip(stus,sex,age): #zip函数将多个list压缩到一起,list个数不限,当list长度不一时,以短的为准
    print(name,se,ag)

    二、模块

    1.模块的概念
     一个python文件就是一个模块
    (1).标准模块
    python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块
    (2).第三方模块
    别人写好的模块,安装完成后就能用
        安装方式:
    pip源安装
    pip install pymysql
    pip命令不存在的,把python安装目录下的scrips加入环境变量
    python2 -m pip install xxxx
    python3 -m pip install xxxx
    手动安装
    .whl
    1、先从python官网上下载安装文件
    2、pip install c://xxx/xxxx/xxx.whl
    .tar.gz
    1、先从python官网上下载安装文件
    2、解压
    3、在命令行里面进入到解压之后的文件夹中
    4、python setup.py install

    (3).自己写的python文件

    2.常用模块

    os模块
     import os
        print(os.getcwd())#取当前工作目录
        os.chmod("/usr/local",7)#给文件/目录加权限
        print(os.chdir("../"))#更改当前目录
        print(os.curdir)#当前目录
        print(os.pardir)#父目录
        print(os.makedirs("/usr/hehe/hehe1"))#递归创建文件夹,父目录不存在时创建父目录
        print(os.removedirs("/usr/hehe/hehe1"))#递归删除空目录
        print(os.mkdir("test1"))#创建文件夹,父目录不存在时,会报错
        print(os.rmdir("test1"))#删除指定的文件夹
        print(os.remove("test"))#删除文件
        print(os.listdir('.'))#列出一个目录下的所有文件
        os.rename("test","test1")#重命名
        print(os.stat("len_os.py"))#获取文件信息
        print(os.sep)#当前操作系统的路径分隔符
        print(os.linesep)#当前操作系统的换行符
        print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
        print(os.environ)#当前系统的环境变量
        print(os.name)#当前系统名称
        print(os.path.abspath(__file__))#获取绝对路径   .代表当前目录 ..代表上一级目录
        print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名
        print(os.path.dirname("/usr/local"))#获取父目录
        print(os.path.basename("/usr/local"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名
        print(os.path.exists("/usr/local"))#目录/文件是否存在
        print(os.path.isabs("."))#判断是否是绝对路径
        print(os.path.isfile("/usr/local"))#判断是否是一个文件
        print(os.path.isdir("/usr/local"))#是否是一个路径
        print(os.path.join("/root",'hehe','a.sql'))#拼接成一个路径,自动识别系统,写出正确的路径分隔符
        print(os.path.getatime("len_os.py"))#输出最近访问时间
        print(os.path.getmtime("len_os.py"))#输出最近访问时间
     os.path.getsize('E:\jch\tett0\a.txt')  #获取文件大小的
     res=os.system('ipconfig')#用来执行操作系统命令,但是只能帮你执行,但是获取不到他的结果
     print(res) #返回0代表执行成功,返回1代表实行失败
     res=os.popen('ipconfig').read() #用来执行操作系统命令,可以返回执行结果,但不能获取动态的结果,例如linux中的top命令
     print(res)


    random模块
      import random,string    
        print(random.random())#随机浮点数,默认取0-1,不能指定范围
        print(random.randint(1,20))#随机整数,首尾都能取到
        print(random.randrange(1,20))#随机产生一个range
        print(random.choice('x23serw4'))#随机取一个元素,只能取到一个
        print(random.sample('hello',2))#从序列中随机取几个元素,返回一个list,不会重复取
        print(random.uniform(1,9))#随机取浮点数,可以指定范围
        [1,2,3,4,6,7]
        random.shuffle(x)#洗牌,打乱顺序,会改变原list的值
        print(x)
        print(string.ascii_letters+string.digits)#所有的数字和字母
    time模块

          import datetime,time        
           print(time.timezone)#和标准时间相差的时间,单位是s
           print(time.time())#获取当前时间戳
           print(time.sleep(1))#休息几s
           print(time.gmtime())#把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
           print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
           print(time.mktime(time.localtime()))#把时间元组转换成时间戳
           print(time.strftime("%y%m%d %H%M%S"))#将时间元组转换成格式化输出的字符串
           print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组
           print(time.struct_time)#时间元组
           print(time.asctime())#时间元转换成格式化时间
           print(time.ctime())#时间戳转换成格式化时间
           print(datetime.datetime.now())#当然时间格式化输出
           print(datetime.datetime.now()+datetime.timedelta(3))#3天后的时间
           print(datetime.datetime.now()+datetime.timedelta(-3))#3天前的时间
      
    print(datetime.date.today()) #当天的日期,只有日期
    print(datetime.datetime.today()) #当天的时间,有日期有时间

    print(datetime.date.today()+datetime.timedelta(days=10))
    res=datetime.datetime.today()+datetime.timedelta(hours=10,minutes=10)
    print(res.date()) #只取到日期
    print(res.time()) #只取到时间
    print(res.timestamp()) #取到时间戳
    print(res.strftime('%Y-%m %H:%M:%S')) #取到格式化好的时间
     
    时间戳:从liunx元年到现在过的秒数
    格式化的时间如:2018-01-07
    时间元组:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=14, tm_min=23, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0)   时间戳和格式化的时间不能直接互转,必须通过时间元组为中介来互转
     
    时间戳和格式化好的时间互转,方法固定,以后可以直接拿来用
    # 1.时间戳转格式话好的时间
    # 1.首先要把时间戳转化为时间元组
    # 2.再把时间元组转化为格式好的时间
    def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
    if timestamp:
    time_tuple = time.localtime(timestamp) # 转成时间元组
    return time.strftime(format,time_tuple) #把时间元组转化为格式话好的时间
    return time.strftime(format)
    res = timestampToStr(2234123120,'%Y%m%d')
    print(timestampToStr())

    # 2.格式化好的时间,转时间戳
    # 1.先把格式化好的时间,转化成时间元组
    # 2.再把时间元组转化成时间戳
    def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):
    if format_time:
    time_tuple = time.strptime(format_time, format) #把格式化好的时间,转化成时间元组
    return int(time.mktime(time_tuple))
    return int(time.time())


  • 相关阅读:
    Codevs 1283 等差子序列
    Codevs 1282 约瑟夫问题
    Codevs 1228 苹果树
    Codevs 1191 数轴染色
    洛谷P1080 国王游戏
    Codevs 1523 地精部落
    2014-7-17 NOIP模拟赛
    Codevs 3409 搬运礼物
    Codevs 1425 最长公共子串
    TyvjP1863 [Poetize I]黑魔法师之门(2014-8-27)
  • 原文地址:https://www.cnblogs.com/kuhaha/p/9265963.html
Copyright © 2020-2023  润新知