• day5


    # 函数
    # 局部变量与全局变量:
    局部变量:在函数里面定义的变量都是局部变量,出了函数之后就不能用了;
    全局变量:在函数外定义的变量;
     
    FILE_NAME='goods.json' #常量,通常使用大写变量名表示(本质还是变量)
     
    # 在函数内部改变函数外的变量值
    1.不可变变量,需要用global声明下
    name='小黑' #全局变量
    def hhh():
        global name #修改全局变量name的值
        name='小白'
        print(name)
    hhh()
    print(name)
    # 2.可变变量,不需要声明,就可以直接改,如list,字典
    d={'name':'abc'}
    def my():
        d['name']=29
        print(d)
    my()
    print(d)
     
    # 函数的形参类型-可变参数,参数值
    def send_mail(*args):
        print(args)
        print('email...',args)
    send_mail('niuhanyang@16.com') #可变参数在函数调用时会把传过来的参数放入一个tuple里
    send_mail('niuhanyang@163.com','lxy@qq.com','zyf@126.com')
     
    def run(name,age=29,*args): #可变参数要放在位置参数和默认参数的后面,非必填,不限制参数个数
         print(name)
         print(age)
         print(args)
    run('lus',33,'北京','天通苑')
     
    # return的用法:
    1.函数没有return,返回的是None
    def nhy():
        name='牛寒阳'
        age=18
        sex='男'
    print(nhy()) #返回一个None
    # 2.返回函数的返回值;终止程序,return后面的语句不会被执行
    def nhy():
        name='牛寒阳'
        age=18
        sex='男'
        return name,age,sex
    a,b,c=nhy() #返回值用a,b,c来接收
    print(a,b,c)
     
    # 函数的形参类型-关键字参数
    def my(name,sex='男',*args,**kwargs): #关键字参数要放在位置参数/默认参数/可变参数的后面,非必填,不限制参数个数
        print(name)
        print(sex)
        print(args)
        print(kwargs)
    my('xhei')
    my('xhei','hhh','args1','args2',k='1',k2='v2') #关键字参数在函数调用时会把传过来的参数放入一个字典里
    my(name='hah',sex='男',age=18)
     
    # 递归-函数自己调用自己
    count=0
    def add():
        global count
        count+=1
        print('hhh',count)
    add() #递归
    add() #最多循环999次,以防止递归外溢
    #用递归的话必须有一个明确的结束条件
    def my():
        num=input('输入一个数字:')
        num=int(num)
        if num%2 != 0:
            print('请输入偶数')
            return my()
    my()
     
    # 列表推导式,列表生成式
    1.形式:[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
    import random
    res=[1,5,78,36,66,18]
    # 展开写法1:
    for i in range(len(res)):
        res[i]=str(res[i]).zfill(2)
        print(res[i])
    # 展开写法2:
    for i in res:
        i=str(i).zfill(2)
        print(i)
    # 写法3:列表推导式写法
    i=[str(i).zfill(2) for i in res]
    print(i)
     
    #1000偶数
    num=[ i for i in range(0,1000,2)] #列表推导式
    print(num)
     
    # 内置函数
    print(max(range(1,28)))  #max,返回最大值
     
    print(min(range(1,28)))  #min,返回最小值
     
    print(sum(range(1,28)))  #sum,求和
    msg='hello'
     
    print(dir(msg))  #看这个对象里面有哪些方法
     
    res=sorted([6,4,3,2,2,8,0])  #返回按升序排序的列表
    print(res)
    res=sorted([6,4,3,2,2,8,0],reverse=True)  #返回按降序排序的列表
    print(res)
     
    eval():执行python代码,只能执行简单的python代码
    1.实现list、dict、tuple与str之间的转化
    res=eval('[1,2,3,4,5]') #把字符串转成list
    print(res)
     
    2.计算指定表达式的值,只能计算单个表达式
    res=eval('2+2')
    print(res)
     
    exec():执行python代码的
    code.txt文件内容如下:
    def my():
    print('我是exec执行的代码‘)
    return 123
    f=open('code.txt')
    code=f.read()
    exec(code)
    my()
     
    print(chr(97))  #打印数字对于的ascii码
     
    print(ord('b')) #打印字符串对应的ascii码
     
    # enumerate()-枚举:
    stus = ['雷振华','胡婷','商洁','涛涛'] #取值时将名字和下标同时打印出来
    方法一:
    for i in range(len(stus)):
        print(i,stus[i])
    方法二:
    for index,s in enumerate(stus):
        print(index,s)
     
    msgs = [ '登录','注册','退出' ]
    for index,msg in enumerate(msgs,1):  #默认下标从0开始,msgs后面加1表示下标从1开始
        print(index,msg)
    print('请输入你的选择:')
     
    # zip():
    stus = ['雷振华','胡婷','商洁','涛涛']
    sex = ['男','女','女','男']
    age = [1,2]
    for name,se,ag in zip(stus,sex,age): #将多个list压缩到一起
        print(name,se,ag)
     
    # 常用的模块
    import os
    print(os.getcwd())  #取当前的路径
    os.mkdir('hu1')  #创建文件夹
    os.mkdir('e:\spz1')  #在指定路径创建文件夹,父目录不存在时会报错
    os.makedirs('e:\spz3')  #创建文件夹
    os.makedirs('e:\sp4\spz5') #父目录不存在的时候会帮你创建父目录
    print(os.listdir(r'e:sp4spz5')) #获取某个目录的所有文件
     
    for i in range(5):
        os.mkdir(r'e:ht123 est%s'%i)  #创建多个文件夹
     
    os.rmdir('e:\spz3') #删除空文件夹
     
    # 练习:把末尾是偶数的文件夹中,创建一个a.txt文件,里面随便写点东西
    1、获取到这个目录下所有的文件夹, os.listdir('')
    2、判断文件夹的名字最后一位是不是偶数
    3、如果是偶数的,在这个文件里 f = open(a.txt)  f.write('xxx')
    for dir in os.listdir(r'e:\ht123'):
        if int(dir[-1]) %2==0:
            abs_path=r'e:\ht123\%s\a.txt'%dir  #拼接文件路径
            with open(abs_path,'w') as fw:
                fw.write('test')
     
    print(os.path.join('ht123','test0','a.txt')) #拼接路径,它会自动识别路径分隔符
    print(os.sep) #获取当前系统的路径分隔符
    print(os.path.dirname(r'e:\ht123 est0')) #获取父目录的路径
    print(os.path.getsize(r'e:\ht123\test0')) #获取文件大小
    print(os.path.exists(r'e:\ht123\test0')) #判断文件,文件夹是否存在
    print(os.path.isdir(r'e:\ht123')) #判断是否是文件夹,如果文件夹不存在的话,会返回False
    print(os.path.isfile(r'e:\ht123\test0\a.txt')) #判断是否是文件,如果文件不存在的话,会返回False
    print(os.path.split('e:\ht123\test0\a.txt'))  #分割文件名和路径的
     
    for path,dir,file in os.walk('e:\ht123'):   #os.walk()目录遍历
        print('path..',path,'dir..',dir,'file..',file)
     
    # 练习
    import os
    for cur,dirs,files in os.walk('logs'):
        print(cur,dirs,files)
        for f in files:
            old_file_name=os.path.join(cur,f)    #拼接旧文件路径
            new_file_name=os.path.join(cur,f+'.bak')  #拼接新的文件路径
            os.rename(old_file_naem,new_file_name)  #重命名
     
    时间戳:从unix元年开始到现在过的秒数
    # 格式化好的时间:2018-07-01
    #时间元组
     
    import time
    print(time.time()) #获取当前时间戳
    print(int(time.time())) #获取当前时间戳,取整
    print(time.strftime('%Y%m%d%H%M%S'))  #返回格式化好的当前时间
    print(time.gmtime())  #把时间戳转成时间元组,如果不传时间戳,那么取的是标准时区的时间
    print(time.localtime()) #把时间戳转成时间元组,如果不传时间戳,那么取的是当地时区的时间
    print(time.localtime(1530436245))#把时间戳转成时间元组
    print(time.strftime('%Y%m%d%H%M%S',time.localtime(1530436245))) #把时间元组转换成格式化好的时间
     
    # 练习一:将时间戳转格式化好的时间
    1.首先要把时间戳转成时间元组
    2.再把时间元组转成格式化好的时间
     
    def timestamptostr(timestmap=None,format='%Y-%m-%d %H:%M:%S'):
        if timestmap:
            time_tuple=time.localtime(timestmap)#时间戳转成时间元组
            return time.strftime(format,time_tuple) #把时间元组转成格式化好的时间
        return time.strftime(format)  #返回格式化好的当前时间
     
    #练习二:格式化好的时间,转时间戳
    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())  #返回当前时间戳
  • 相关阅读:
    京东白条
    Linux命令(40)rm 命令
    Linux命令(39)rmdir 命令
    Linux命令(38)pstree命令
    Linux命令(37)type命令
    Linux命令(36)help命令
    Linux命令(35)du命令
    CentOS7修改主机名
    Linux命令(34)tac命令
    Linux命令(33)cat命令
  • 原文地址:https://www.cnblogs.com/you-shu/p/9274386.html
Copyright © 2020-2023  润新知