• Python函数参数&time、OS、json模块


    传参方式:
    1.默认传参:形参里k=v,如果调用时不传k,则k为v;如果传m,则k为m
    2.按顺序或k=v
    3.*args,可传多个或0个实参,args会接收
    4.**args,
    可传多个或0个实参,args会接收,但必须用k=v的形式传参
    5.调用传参时,
    *args可序列解包列表。如定义l=[1,2,3],调用时test(*l)
    6.
    调用传参时,**args可序列解包字典。如定义dic=[a=1,b=2,c=3],调用时test(**l)


    ##可变参数

    PORT = 3306 #常量

    def mysql(host,user,password,port,charset,sql,db):
    print('连接mysql')

    # mysql('ip','user','sdfsdf',3306,'sdfsdf','select','db')
    # mysql(user='root',password='123456',host='192.168.1.3',
    # port=3306,sql='sdfsdf',db='sdfsdf',charset='sdfsdf')
    #
    # mysql('192.168.1.1','root',port=3306,password='sdfsdf')

    #mysql(password='123456','root',) 不对

    # def mysql2(ip,*info):
    # print(info)
    #
    # mysql2('user',13345435,00000,'sefsd','sdfds')
    # mysql2()
    # mysql2(1)
    # mysql2(1,2)
    #这种参数是必传的还是非必传的
    #有没有限制参数个数
    def send_mail(*args):
    print(args)
    #
    # send_mail('qqq@qq.com')
    # send_mail('qqq@qq.com','asaaa@163.com','ddd@sina.com')

    #
    # def calc(a,b,c):
    # print(a+b)
    # return a+b
    #
    # l = [1,2,3]
    # calc(*l)

    ##关键字参数

    # #**可以不传
    # def mysql(**mysql_info):
    # print(mysql_info)
    #
    # print(mysql())#返回空
    # #print(mysql('ip','user')) #没有关键词,会报错
    # print(mysql(ip='192.1',port=3306))#传入关键字参数,返回字典
    #
    def request(url,method,**info):
    print(info)

    print(request('www.trg.cn','post',data='zff',head='dddd'))#url和method必须传,后边儿随意

    def mysql(host, user, password, port, charset, sql, db):
    print('连接mysql')
    print(mysql())

    dic = {
    'host': '192.168.1.1',
    'user': 'root',
    'password': 123456,
    'port': 3306,
    'charset': 'utf-8',
    'sql': 'sql',
    'db': 'db'
    }

    #**把字典拆开,变成k-v传参。其中key必须和形参一样.
    mysql(**dic)
    #list删除元素错误循环示范:
    li = [1,1,2,3,4,5,6,7,8,9]
    for i in li:
    if i%2!=0:
    li.remove(i)
    print(li)

    #循环删list会计算出错,因为删了一个元素后,后边的元素下标会改变,取值会遗漏
    #解决办法:定义俩个一样的表,循环第二个,删除第一个
    import copy
    li = [1,1,2,3,4,5,6,7,8,9]
    li2 = [1,1,2,3,4,5,6,7,8,9]
    #也可写成 li2 = li (叫浅拷贝,这个li2和li的内存地址一样)
    #li2 = copy.deepcopy(li) #深拷贝,重新开辟了一块内存
    # print(id(li)) #查看内存地址
    for i in li2:
    if i%2!=0:
    li.remove(i)
    print(li)

    ##常用模块:
    一个python文件就是一个模块
    1、标准模块,python自带的
    2、第三方模块 需要安装
    3、自己写的python文件


    ##json模块:
    import json
    #解析json的
    json_str = '''
    {"name":"xiaohei","age":18,"sex":"男","age":18}
    '''
    res = json.loads(json_str) #把字符串(json串)转成字典
    print(res)
    print(type(json_str))
    print(type(res))
    dic = {
    "xiaohei":{
    "age":18,
    "password":12345,
    "sex":"男",
    "addr":"北京"
    },
    "马春波":{
    "age":18,
    "password":12345,
    "sex":"男",
    "addr":"北京"
    },
    "王东泽":{
    "age":18,
    "password":12345,
    "sex":"男",
    "addr":"北京"
    },
    }
    res = json.dumps(dic,ensure_ascii=False,indent=4)#把字典变成字符串
    print(res)
    f = open('user.json','w',encoding='utf-8')
    f.write(res)
    load 自己读
    f = open('user.json',encoding='utf-8')
    res = json.loads(f.read())
    print(res)
    res = json.load(f)
    print(res)
    #dump 自己写
    fw = open('newuser.json','w')
    json.dump(dic,fw,indent=4,ensure_ascii=False) #字典做json写入文件,需要考虑到字符和格式。

    ##OS模块
    import os
    res = os.listdir('/Users/nhy/Desktop') #列出某个目录下的所有文件
    os.remove()
    os.rename()
    os.mkdir(r'test/niuhy/haha')#创建文件夹
    os.makedirs(r'test1/lyl/aaa')#会创建父目录
    res = os.path.exists(r'/Users/nhy/Desktop/stu.txt')
    os.path.isfile() #判断是否为文件
    os.path.isdir()#判断是否为文件
    res = os.path.split(r'/Users/nhy/Desktop/stu.txt')
    res = os.path.dirname(r'/Users/nhy/Desktop/stu.txt')#取父目录
    res = os.getcwd() #获取当前的目录
    os.chdir(r'/Users/nhy/Desktop/')#更改当前目录
    res = os.getcwd()
    print(res)
    open('a.txt','w')
    print(os.environ)#看你电脑的环境变量

    res = os.path.join('test','hhh','abc','a.txt')#拼接路径
    print(res)
    res= os.path.abspath('..')#根据相对路径取绝对路径
    print(res)

    res = os.system('hhhsdf')#执行操作系统命令
    # print(res)
    res = os.popen('ifconfig').read()
    print('res',res)

    ##time模块
    import time

    #格式化好的时间 20181202
    #时间戳 2343242

    #时间元组

    # print(int(time.time()))#时间戳
    # res = time.strftime('%Y-%m-%d %H:%M:%S')#取当前格式化好的时间
    # print(res)

    #时间戳转换成时间元组,时间戳转格式化好的时间
    #time1 = time.gmtime(int(time.time()))#把时间戳转成时间元组,以标准时间的时间转换的
    # time1 = time.localtime(int(time.time()))#把时间戳转成时间元组,以标准时间的时间转换的
    # res = time.strftime('%Y-%m-%d %H:%M:%S',time1)
    # print(res)


    #格式化好的时间转时间戳

    timep = time.strptime('2018-10-23 15:38:59','%Y-%m-%d %H:%M:%S')
    print(timep)
    res = time.mktime(timep)#把时间元组转成时间戳
    print(res)
    #20181023 2323
    def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
    #时间戳转格式化好的时间
    if timestamp:
    time1 = time.localtime(timestamp)
    res = time.strftime(format, time1)
    else:
    res = time.strftime(format)
    return res
    #20180304153958
    def strTotimestamp(str=None,format='%Y%m%d%H%M%S'):
    #格式化的时间转时间戳
    if str:
    timep = time.strptime(str, format)
    res = time.mktime(timep)
    else:
    res = time.time()
    return int(res)



    ##全局变量
    name = '小明'
    stus = []
    #list、字典、集合 不需要声明即可全局使用
    #字符串、int、float、元组 需要声明global
    def a():
    global name
    stus.append('abc')
    name = '哈哈哈'
    print(name)

    #函数体内声明了global,里边的操作,对外面或其他函数中都有效。

    def b():
    print('stus..',stus)
    print(name)
    age = 18
    print(age)
    a()
    b()


    money = 500
    def test(consume):
    return money - consume

    def test1(money):
    return test(money) + money

    money = test1(money)
    print(money)


    def test():
    global a
    a = 5

    def test1():
    c = a + 5
    return c
    test()
    res = test1()
    print(res)
    import copy
    # 0 1 2 3
    num1 = [1,1,2,3,4,5,6,7,7,8]
    num2 = num1 #浅拷贝
    num2 = copy.deepcopy(num1)
    #深拷贝
    print(id(num1))
    print(id(num2))
    # 0 1 2
    for i in num2:
    if i%2!=0:
    num1.remove(i)
    print(num1)

    #2 4 6 8
    #不变
    #报错

    ##列表生成式
    s =[1,2,3,4,5,6,7,8]
    for i in s:
    print(i+1)
    res = [ i+1 for i in s]
    res = [str(i) for i in s]

    print(res)






     
  • 相关阅读:
    Spring学习总结(六)——Spring整合MyBatis完整示例
    Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二
    Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)一
    Spring学习总结(四)——表达式语言 Spring Expression Language
    Spring学习总结(三)——Spring实现AOP的多种方式
    Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
    Spring集成MyBatis完整示例
    数据库字符集的坑
    MYSQL中的UNION和UNION ALL
    MySQL的事务和锁
  • 原文地址:https://www.cnblogs.com/fangfangzhang/p/10089476.html
Copyright © 2020-2023  润新知