python-函数和模块

 

 

还要感谢贝勒帮我解决安装模块始终装不上的问题,我在下面写一下解决办法吧:

pip install pymysql报错如下:

安装正确如下图:

解决方法:https://blog.csdn.net/SAJIAHAN/article/details/78309561

Pip 国内源的使用

 

 我是用的2里面的b修改好了,步骤如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

 

 

  模  块


#一个python文件就是一个模块

#1、标准模块
python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块
import json
import random
import datetime
import time
import os
#2、第三方模块
别人写好的模块,你安装完之后就能用
pip源

# 1、
pip install pymysql
#1、pip命令不存在的,把python安装目录下的scrips加入环境变量
python2 -m pip install xxxx
python3 -m pip install xxxx
2、手动安装
.whl
1、先从python官网上下载安装文件
2、pip install c://xxx/xxxx/xxx.whl


.tar.gz
1、先从python官网上下载安装文件
2、解压
3、在命令行里面进入到解压之后的文件夹中
4、python setup.py install

#3、自己写的python文件

 

 

常用的模块:

 小知识点:

 1 import os
 2 # print(os.getcwd())#取当前的路径
 3 # os.mkdir('作业')
 4 # os.mkdir('e:\\zjr123')#windows系统用\\  mac用/
 5 # os.mkdir('c\\a')#父目录不存在会报错
 6 # os.makedirs('b\\a')#父目录不存在的时候不会报错
 7 
 8 # print(os.listdir('.'))#当前目录下有哪些东西,放路径就是获取某个目录下的所有文件
 9 
10 # for i in range(10):
11 #     os.mkdir('e:\\zjr123\\test%s'%i) #在这个路径下创建从test0到test9的文件夹
12 
13 # os.rmdir('stu')#删除空文件夹,非空文件夹不能删除
14 #
15 #把末尾是偶数的文件夹中创建一个a.txt文件,里面随便写点东西
16   # 1. 获取到这个目录下的所有的文件夹,os.listdir('')
17   # 2. 判断文件夹的最后一位是不是偶数
18   # 3. 如果是偶数的,在这个文件夹里f = open(a.txt) f.write('xxx')
19 
20 # a=os.listdir('e:\\zjr123') # os.listdir(r'e:\\nhy123') 加r是为了转义,单独\n是换行符
21 #获取这个文件夹里所有的文件
22 # print(a)
23 # for dir in a:#循环这些文件
24 #     # print(dir[-1])#取字符串的最后一个字符
25 #     if int(dir[-1])%2 == 0:#判断是否为偶数
26 #         abs_path = r'e:\\zjr123\\%s\a.txt'%dir #跨目录拼接绝对路径
27 #         print(abs_path)
28 #         with open(abs_path,'w',encoding='utf-8') as fw:
29 #             fw.write('zjirjn')
30 
31 # print(os.path.join('zjr123','test0','b.txt'))#拼接路径,它会自动识别路径分割符
32 # print(os.sep)#当前系统的路径分隔符
33 # print(os.path.dirname('e:\\zjr123\\test0\\a.txt'))#获取父目录的路径
34 # print(os.path.getsize('e:\\zjr123\\test0\\a.txt'))#获取文件大小的,可以用来判断空文件
35 # print(os.path.exists('e:\\zjr123\\test0'))#判断文件夹是否存在 True or False
36 # print(os.path.isfile('e:\\zjr123\\test0\\a.txt'))#判断是否是文件,如果文件不存在报False
37 
38 # print(os.path.split('e:\\zjr123\\test0\\a.txt'))#分割文件路径和文件名

 遍历文件夹:

#遍历我电脑本机e盘下zjr123文件夹下有哪些文件和文件夹
1
import os 2 for cur_dir,dir,files in os.walk('e:\\zjr123'):#cur_dir路径下,dir表示有哪些文件夹,files表示有哪些文件 3 print('cur_dir..',cur_dir,'dirs..',dir,'files..',files)

结果:

 练习:在logs文件夹里所有的文件后面加.bak

1 import os
2 for cur,dirs,files in os.walk('logs'):#平级,写相对位置
3     # print(cur,dirs,files)
4     for f in files:#android_2018-04-17.log.bak
5         new_file_name = os.path.join(cur,f+'.bak')#新名字
6         # new_file_name = new_file_name.replace('.bak','')
7         print(new_file_name)
8         old_file_name = os.path.join(cur,f)#旧名字logs\android\android_2018_04_12.log
9         os.rename(old_file_name,new_file_name)#用新名字替换旧名字

结果:

 

日期相关的

 

 

1 import time
2 #时间戳 从unix元年开始到现在过的秒数
3 #格式化好的时间 2018-07-01
4 
5 print(int(time.time()))#获取当前的时间戳
6 print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的时间
7 print(time.strftime('%y-%m-%d %H:%M:%S'))#获取当前的时间
1 #取十天前的时间  当前时间戳-10天的总秒数
2 print(24*60*60*10)
3 print(1530620629-864000)#再上网找工具转换成格式化的时间
#时间元组,时间戳和格式化时间互转的中间物

print(time.gmtime())#把时间戳转成元组,如果不传时间戳,那么取的是标准时区的时间(东八区比标准时区大8)
print(time.localtime())#把时间戳转成元组,如果不传时间戳,那么取的是当前时区的时间

结果:

#通过时间元组求十天前的日期
print
(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1530620629-864000)))#十天前的日期

 

 两个很有用的函数,记下来!!!

 1 #1.时间戳转格式化的时间
 2   #1.首先要把时间戳转成时间元组
 3   #2.再把时间元组转成格式化好的时间
 4 
 5 
 6 def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
 7     if timestamp:#如果传的话
 8         time_tuple = time.localtime(timestamp)  # 把时间戳转成时间元组
 9         return time.strftime(format,time_tuple)
10     return time.strftime(format)#如果不传就默认当前的时间戳,格式按format来
11 res = timestampToStr(22341231201,'%Y%m%d')
12 print(res)
13 print(timestampToStr())
14 
15 #
16 # #2.格式好的时间,转时间戳
17 #    1.首先要把格式化好的时间转成时间元组
18 #    2.再把时间元组转成时间戳
19 
20 def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):
21     if format_time:
22         time_tuple = time.strptime(format_time, format) #把格式好的时间转时间元组
23         return int(time.mktime(time_tuple)) #时间元组转时间戳
24     return int(time.time())#如果不传就取当前时间戳
25 a=strToTimestamp()
26 print(a)

 

 

python内置的一些函数

 

print
input
int
dict
set
list
str
len
open
tuple
type
max #取最大值的
dir #看这个对象里面有哪些方法
sorted #排序
print(chr(97))#打印ascii码对应的字符
print(ord('b'))#打印字符串对应的ascii码

round(3.123,2)#保留2位小数

eval #python执行代码
exec #执行python代码
enumerate 枚举
zip

 字符串格式化 %s 和 format

 1 import datetime
 2 #字符串格式化 %s 和 format
 3 msg = '欢迎{name},今天是{today}'
 4 msg = msg.format(name='zjr',today=datetime.datetime.today())
 5 print(msg)
 6 
 7 sql='insert into {} VALUE {}'.format('adb','qq')#大括号可以为空,跟%s差不多
 8 
 9 print(sql)
10 
11 #format_map 后面传一个字典
12 d={'name':'zjr','sex':''}
13 words = '名字:{name},性别:{sex}'.format_map(d)
14 print(words)

 

关于函数的一些补充:

常量、局部变量、全局变量

 1 name = 'zjr'#尽量不使用全局变量,会占内存
 2 FILE_NAME='goods.json'#常量,不变动,用大写
 3 
 4 #局部变量
 5     #在函数里定义的变量都是局部变量,出了函数就不能用了
 6 #全局变量
 7     #在文件最上面定义的这个变量,就是全局变量
 8 
 9 def test():
10     global name#声明我要修改全局变量
11     name ='小白'
12     print(name)
13 test()
14 
15 d = {'name':'zjr'}
16 #字典和list,这种可变变量,不需要用global来声明,就直接可以修改
17 def my():
18     d['sex']=28
19     print(d)
20 my()
21 print(d)

 

 

 

 

 
23 #可变参数 默认*args,可随便取名
24 def send_mail(*email):
25     print('email..',email)
26     # print('给xxx发邮件%s'%email)
27 send_mail('zjr@qq.com')
28 send_mail('1111@qq.com','55555@qq.com')
29 send_mail()
30 #1.非必填
31 #2.没有限制参数个数
32 
33 def run(name,age=21,*args):
34     print('name..',name)
35     print('age..',age)
36     print('args..',*args)
37 run('zjr',45,'bj','lala')
38 
39 #返回多个值
40 def zjr():
41     name = '小红'
42     sex = ''
43     age = 23
44     return name,sex,age
45 a,b,c=zjr()
46 # res = zjr() #return多个值放元组
47 print(a,b,c)
48 
49 def op_db(ip,port,db,passwd,sql):#多个参数,用了位置传参后不能再直接默认传参
50     pass
51 
52 #关键字参数
53 def m(name,**info):#**info,放到字典中,默认**kwargs
54     print(info)
55 # m(name='hhh',sex='boy',age=21)
56 # m('khh',a='boy',b=1)
57 # m()
58 # m(type='car',a=1,b=1)
59 
60 #递归,函数自己调用自己,递归最多循环999次 61 #1.用递归的话,必须有一个明确的结束条件 62 63 count = 0 64 def add(): 65 global count 66 count+=1 67 print('hhh',count) 68 add() 69 # add() 70 def my2(): 71 num = input('输入一个数字:') 72 num = int(num) 73 if num%2 != 0: 74 print('请输入偶数!') 75 return my2() 76 # my2() 77 78 # for i in range(1,34):#1到33,顾头不顾尾 79 # print(i) 80 81 import random 82 res = random.sample(range(1,34),6) 83 # print(res) 84 #列表推导式,列表生成式 85 res = [str(i).zfill(2) for i in res] 86 print(res) 87 res2 =[1,2,3,4] 88 res2 = [i+10 for i in res2] 89 print(res2)

 

posted @ 2018-07-03 20:03  Mezhou  阅读(387)  评论(0编辑  收藏  举报