函数
name = '小黑' FILE_NAME ='goods.json' # 常量 # 局部变量 # 在函数里面定义的变量都是局部变量,除了函数之后就不能用了 #全局变量 # 在文件最上面定义的这个变量,就是全局变量 def test(): # global name # 想在函数中对全局变量进行修改,就用global声明一下 name = '小白' print(name) # test() # print(name)
d = {'name':'abc'} # 字典和list,这种可变变量,不需要用global来声明,就可以直接改了
def my():
d['sex']=29
print()
# my()
# print(d)
# 可变参数,参数组 def send_mail(*args): print(args) print('email..',args) # print('给xxx发邮件了%s'%email) # send_mail('abc@163.com') # send_mail('abc@163.com','def@163.com','ghi@163.com') # send_mail() def run(name,age,*args): print(name) print(age) print('args..',args) # run('Lcs',28,'beijing','天通苑')
# 1、是否必填 # 2、有没有限制参数个数 ################################################################################ def abc(): name = '小黑' sex = '男' age = 18 return name,sex,age # print(abc()) # return多个值,会把值放在一个元组里 # a,b,c = abc() # print(a,b,c)
################################################################################ def op_db(ip,port,db,user,passwd,sql): print('链接mysql操作数据库') pass # 三种传参方式: # op_db('192.168.1.1','xxx','3306','sdf','sdf','sdf') # 按照位置 # op_db(db='jxz',ip='192.168.1.1',passwd='123456',user='abc',port='3306',sql='select * from users') # 按照关键字 # op_db('192.168.1.1','3306',db='jxz',passwd='123456',user='abc',sql='select * from users') # 位置方式必须在关键字方式前面
################################################################################ # 位置参数(必填参数),默认值参数(不必填),可变参数(不必填的,不限制参数个数) # 关键字参数 #--------------------------------------# def my(name,sex='男',*args,**kwargs): print(name) print(sex) print(args) print(kwargs) my(name = '小黑',sex = '男',age = 18) # my() # my(type = 'car',a = 1, c =1)
#--------------------------------------# # 1、是否必填 # 非必填 # 2、有没有限制参数个数 # 不限制 # 3、**把传过来的参数放到了什么里面 # 字典 #--------------------------------------# # def my(name,**kwargs): # print(name) # print(kwargs) # my('小黑',a='aaa',b='bbb') #--------------------------------------# # def my(name,sex='男',*args,**kwargs): # print(name) # print(sex) # print(args) # print(kwargs) # # my('小黑','男','args1','args2',k1='v1',k2='v2')
#★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # 递归,函数自己调用自己 count = 0 def add(): global count count+=1 print('hhh',count) add() # add() # 递归的话,最多循环999次
################################################################################ def my2(): num = input('输入一个数字:') num = int(num) if num%2 !=0: print('请输入偶数') return my2() # my2() # 1、用递归的话,必须得有一个明确的结束条件 ################################################################################ # 举个例子 # 把[20, 19, 10, 6, 15, 17] 改成: #['20', '19', '10', '06', '15', '17'] # import random # res = random.sample(range(1,34),6) # print(res) # for i in range(len(res)): # res[i] = str(res[i]).zfill(2) # print(res)
# 列表推导式,列表生成式 res = [20, 19, 10, 6, 15, 17] print('res:%s'%res) res1 = [str(i).zfill(2) for i in res] print('res1:%s'%res1) res2 = [ i+10 for i in res] print('res2:%s'%res2) # 1000 以内的所有偶数 hh = [ i for i in range(2,1000,2)] print('1000以内的偶数:%s'%hh)
内置函数
# 查看内置方法有哪些
# msg = 'hello' # print(dir(msg)) # import json # print(dir(json))
# 字符串/list排序 print(sorted('4564231315')) # 升序 print(sorted([2,5,6,1,2,3,5],reverse=True)) # 降序
print(round(6.6666666,2)) # 保留两位小数
# eval() # 执行python代码,只能执行简单的python代码。1+1 a=1 res = eval('3*5') print(res)
# f = open('goods') # goods = f.read() # res = eval(goods) print(type(res))
# exec() # f = open('code',encoding='utf-8') code = f.read() exec(code) # 执行python代码的 my()
stus = ['小黑','小白','小黄','小红'] for i in range(len(stus)): print(i,stus[i]) # enumerate --- 枚举,只要可以循环的都可以用(list、字符串、字典....) for index,s in enumerate(stus): print(index,s)
msgs = ['登录','注册','退出'] for index,msg in enumerate(msgs,1): # enumerate(XXX,1) 这里1表示从1开始 print(index,msg) print('请输入你的选择:')
name = ['小黑','小白','小黄','小红'] sex = ['男','女','女','男'] age = [15,17,16,18] for name,sex,age in zip(name,sex,age): # 把多个list压缩到一起 print(name,sex,age) # 如果list中元素个数不一致,循环执行次数按照元素个数最少的那个
常用模块
import os print(os.getcwd()) # 取当前的路径 os.mkdir('spz') # 创建文件夹 os.mkdir('f:\\wj') os.makedirs('spz2') # 创建文件夹 os.makedirs('stu\\wj') # 父目录不存在时,会帮你创建父目录 print(os.listdir('f:\\')) # 查看目录下有哪些文件 for i in range(10): os.mkdir('f:\\wj\\test%s'%i) os.rmdir('spz') # 删除空文件夹 print(os.remove("test"))#删除文件
# 把末尾是偶数的文件夹中,创建一个a.txt文件,里面随便写点东西 # 1、获取到这个目录下所有的文件夹。os.listdir('') # 2、判断文件夹的名字最后一位是不是偶数 # 3、如果是偶数,在这个文件里 f = open(a.txt) f.write('xxx') for dir in os.listdir(r'f:\\wj'): if int(dir[-1])%2==0: abs_path = r'f:\\wj\\%s\\a.txt'%dir with open(abs_path,'w') as fw: fw.write('test') print(os.path.join('wj','test0','a.txt')) # 拼接路径,它会自动识别路径分隔符 print(os.sep) # 当前系统的路径分隔符 print(os.path.dirname(r'f:\\wj\\test0\\a.txt')) # 获取父目录的路径 print(os.path.getsize(r'f:\\wj\\test0\\a.txt')) # 获取文件大小 print(os.path.exists(r'f:\\wj\\test0\\a.txt')) # 判断文件、文件夹是否存在 print(os.path.isdir(r'e:\\wj\\test0\\a.txt')) # 判断是否是文件夹,如果不存在,会返回False print(os.path.isfile(r'e:\\wj\\test0\\a.txt')) # 判断是否是文件,如果不存在,会返回False print(os.path.split(r'f:\\wj\\test0\\android_2018-06-23.log')) # 分割文件名和路径
时间相关的模块
import time # 时间戳 从unix元年开始到现在过的秒数 # 格式化好的时间 2018-07-01 # 时间元组 print(int(time.time())) # 获取当前时间戳 print(time.strftime('%Y-%m-%d %H:%M:%S')) print(24*60*60*3) # 3天的总秒数 print(time.gmtime()) # 把时间戳转成时间元组,如果不转时间戳,那么取的是标准时区的时间 print(time.localtime()) # 把时间戳转成时间元组,如果不转时间戳,那么取的是当前时区的时间 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1530436293 - 259200))) # 1530436293 - 259200 三天前的时间戳
# 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(2210065421) # res = timestampToStr(22456465421,'%Y%m%d') print(res) ################################################################################ # 1、格式化好的时间转成时间戳 # 1、首先要把格式化好的时间转换成时间元组 # 2、再把时间元组转换成时间戳 def strToTimestamp(format_time,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()) res = strToTimestamp('2019-02-21 18:06:45') print(res)
浙公网安备 33010602011771号