目录
一、eval(input( )) 和 int(input( )) 的区别
二、单引号、双引号、三引号的区别
1、单引号和双引号
2、三引号
三、随机数的生成
四、字符串中查找子串出现的所有位置
五、将多个jupyter的.ipynb文件合并为一个
六、Python文件.py转换为.exe可执行程序
1、安装pyinstaller
2、pyinstaller命令转换
3、拓展
七、if __name__ == '__main__':的作用
八、 Python第三方模块(库、包)的安装、卸载与查看
1、pip.ini 配置
2、查看自己的第三方库默认安装路径
3、已安装的包
4、安装库
5、卸载库
一句话提前总结:尽量避免使用 eval( )
=====================================================================
输入整数用int(input( ))
输入浮点数用float(input( ))
input( ) 函数的作用是返回用户输入的值,不管输入的是什么(数字、字母或其他字符),返回的值总是一个字符串。
eval( ) 函数的作用是将字符串的引号去掉将参数当做代码执行,如果引号里面是一个数字,返回值则是这个数字本身;如果引号里面是运算表达式,返回值就是表达式的运算结果;如果引号里面是字母(或单词),会报错,如果你原来已经将这个字母(或单词)做了变量,则没有问题;引号里面还可以是又一段python代码,返回值就是执行这段代码。
int( ) 函数的作用是将数字或运算表达式转换为整数,也可以将只包含整数的字符串转换为整数,转不了会报错。
还可以将其他进制的数转换为十进制数,例如:int('12',16) ,12就是一个16进制的数,int( )函数将其用十进制数表示,输出18。12要以字符串的形式进行输入,如果是带参数base的话。
注:字符串里前导零并不会影响
int( ),
但是eval( )
会首先将前导零认为是八进制数字, 这也是int( )
和eval()
在整数转换时候不一样的地方(int更胜一筹)。
eval(input( )) 的作用就是将输入的字符串的引号去掉,把输入的字符串直接作为python代码执行,相当于打开一个python窗口,别人输入什么代码就跑什么代码,不一定非得是数字,这个时候其实就有点危险了,字符串可能就变成了一行代码 ,执行起来后果无法预料。例如你之前有 import os,别人通过 input( ) 输入一个 os.system('del /f /q *') (谨慎操作) ,一个 eval( ) 之后你这个文件夹里的文件就没了,如果你使用的是类Unix系统, 并且此时工作目录下有一些源文件,用户输入 __import__('os').system("rm -rf *") ,此时目录中的内容就消失了(谨慎操作)。除非你确实有需要,否则尽量避免用 eval( ) 。
int(input( )) 的作用就是将输入的字符串转换为整数,转不了会报错,仅此而已。
eval( )
虽然也能将字符串转换为整数, 但是其效率非常低:
from time import time
st=time()
ans=[]
for i in range(10000000):
ans.append(eval(str(i)))
print("ok")
print("time :", time()-st)
上面的代码运行时间大概在半分钟以上,而将eval
换成int
之后程序运行时间只要几秒,足可见其对运行效率的影响。每次运行的时间不一样,因为还受到电脑CPU以及硬件等其他因素的影响,而CPU是动态变化的,如果只看函数本身的话,大概估计 int 的转换效率是 eval 的十倍以上左右。
eval的缺点是执行速度慢,并且会有安全风险。
对比后不难发现,使用eval()函数有诸多问题要注意,不然容易出现问题。
普通用法是相同的,都是用来定义一个字符串的,为什么Python要同时使用两种方法定义字符串,这不重复了吗?其实在定义字符串方面,单引号和双引号是互相补充:
原始字符串中包含单引号,可以使用双引号定义;
原始字符串中包含双引号,可以使用单引号定义;
当用双引号包起来的字符串里包含单引号的时候, 不需要使用转义符(\), 反过来也是一样。当然你也可以继续使用转义符,对字符串中的单引号或双引号进行转义,不过代码的可读性就变糟糕了。
由三个成对的单引号或者三个成对的双引号组成
三引号的作用是:在输出的情况下,保持字符串的格式不改变
最好在输出的信息量比较多,并且有固定格式要求的时候使用三引号,否则有点大材小用
主要有2大用法:
(1)多行注释:
当文档注释有很多行时候,用这个非常方便。#通常是单行注释,但是注释有多行时,用三引号可以一次性解决 。
使用三引号做注释符的时候一定要注意格式。三引号的前面不能有任何东西,必须要在单独的,新的一行开始。
(2)定义多行字符串:
三引号包含的字符串可由多行组成,可以直接换行,不需要使用“\n”,字符串内容有单引号、双引号时也不需要进行转义。
引号之间的嵌套关系:
单引号中可以嵌套单引号【需要使用转义符(\)】
单引号中可以嵌套双引号
双引号中可以嵌套单引号
双引号中可以嵌套双引号【需要使用转义符(\)】
三引号中可以嵌套单引号
三引号中可以嵌套双引号
三引号中不能嵌套三引号
① random.random( )
功能:随机生成一个 [0,1) 的浮点数
用法:random.random( )
② random.uniform(a,b)
功能:随机生成一个 [a,b) 的浮点数
用法:number = random.uniform(2,4)
③ random.randint(a,b)
功能:随机生成一个 [a,b] 的整数
用法:random.randint(2,4)
④ random.randrange(a,b,step)
功能:随机生成一个 [a,b) 的整数,step -- 指定递增基数,缺省值为1。
用法:random.randrange(2,8)、random.randrange(2,10,2)
⑤ random.choice(sequence)
功能:从一个已有的sequence中随机选择一个元素
用法:random.choice(range(2,10))、random.choice('anbegvdje')
⑥ random.sample(sequence,k)
功能:从某一序列中获取指定长度的随机片段
用法:a = ['楚弥真','蒲深雨','李隐','赢子夜','上官眠']b = random.sample(a,2)
⑦ random.shuffle(列表)
功能:打乱一个列表的元素顺序
用法:a = ['楚弥真','蒲深雨','李隐','赢子夜','上官眠']random.shuffle(a) # 打乱这个操作不需要重新定义对象,它作用的是对象本身
直接利用字符串查找方法find()和index(),只能查找字符串首次出现的位置。
利用正则表达式的 finditer 方法,查找子串出现的所有位置
import re
s = 'http∶//sports.sina.com.cn/'
str1 = "com"
# finditer 方法,查找子串出现的所有位置
starts = [each.start() for each in re.finditer(str1, s)]
ends = [start + len(str1) - 1 for start in starts]
span = [(start, end) for start, end in zip(starts, ends)]
print(span)
借助nbmerge工具包
安装:pip install nbmerge
合并:nbmerge a.ipynb b.ipynb c.ipynb > hebing.ipynb
注:合并后的文件是utf-16编码的,需要转为utf-8编码才可以打开,可以使用Notepad++转码
pip install pyinstaller
pyinstaller -F quickStart.py
-F参数是指示生成exe文件,quickStart.py就是你想要转换为.exe文件的.py文件了
等待运行结束,运行结束后,我们会发现在我们存放项目的文件夹内会多出两个文件夹,则运行成功,其中我们打包好了的.exe文件就存放在dist文件夹内,然后你将你的exe文件发给别人,就可以运行了。
生成有图标的exe程序,添加参数-icon即可:
pyinstaller --icon=logo.ico -F quickStart.py
注:py文件和用于做图标的照片需要存放于同一个文件夹中
将图片转换为图标文件的网站:http://www.bitbug.net/
一个python文件通常有两种使用方法:
第一种是作为脚本直接执行第二种是 import 到其他的 python 脚本中被调用(模块重用)执行。
因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程。
在 if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
-U是update代表升级pip的意思
设置成功后你的 C:\Users\UserName\AppData\Roaming\pip
路径下会出现一个 pip.ini
配置文件
这样就完成了 pip
默认镜像源配置,以后每次在 cmd 窗口下执行 pip 安装命令,都默认从设定的镜像源下载安装,我使用的是清华的镜像站。
查看当前源:
pip config list
输出上面配置的源域名说明成功!
python -m site
更改默认路径,去python环境修改Lib 文件夹下的 site.py
文件即可。
分别修改 USER_SITE 、USER_BASE 的路径即可。
列出所有包:
pip list
查看某个包的安装位置:
pip show numpy
以numpy为例:
pip install numpy
一键安装多个包:
import os
# 将需要安装的库名称放到列表中
libs = ['nbmerge', 'pyinstaller', 'numpy', 'jieba']
for lib in libs:
# 遍历并安装库,注意了:install后面有一个空格!
os.system("pip install " + lib)
一键卸载多个包只需将install换为uninstall即可。
pip uninstall numpy