zoukankan      html  css  js  c++  java
  • 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)






     
  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/fangfangzhang/p/10089476.html
Copyright © 2011-2022 走看看