Python随手记

这篇具有很好参考价值的文章主要介绍了Python随手记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、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(input( )) 和 int(input( )) 的区别

一句话提前总结:尽量避免使用 eval( ) 

=====================================================================

输入整数用int(input( ))

输入浮点数用float(input( ))

input( ) 函数的作用是返回用户输入的值,不管输入的是什么(数字、字母或其他字符),返回的值总是一个字符串

eval( ) 函数的作用是将字符串的引号去掉将参数当做代码执行,如果引号里面是一个数字,返回值则是这个数字本身;如果引号里面是运算表达式,返回值就是表达式的运算结果;如果引号里面是字母(或单词),会报错,如果你原来已经将这个字母(或单词)做了变量,则没有问题;引号里面还可以是又一段python代码,返回值就是执行这段代码。

int( ) 函数的作用是将数字或运算表达式转换为整数,也可以将只包含整数的字符串转换为整数,转不了会报错。

还可以将其他进制的数转换为十进制数,例如:int('12',16) ,12就是一个16进制的数,int( )函数将其用十进制数表示,输出1812要以字符串的形式进行输入,如果是带参数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()函数有诸多问题要注意,不然容易出现问题。

二、单引号、双引号、三引号的区别

1、单引号和双引号

普通用法是相同的,都是用来定义一个字符串的,为什么Python要同时使用两种方法定义字符串,这不重复了吗?其实在定义字符串方面,单引号和双引号是互相补充:

原始字符串中包含单引号,可以使用双引号定义;

原始字符串中包含双引号,可以使用单引号定义;

当用双引号包起来的字符串里包含单引号的时候, 不需要使用转义符(\), 反过来也是一样。当然你也可以继续使用转义符,对字符串中的单引号或双引号进行转义,不过代码的可读性就变糟糕了。

2、三引号

由三个成对的单引号或者三个成对的双引号组成 

三引号的作用是:在输出的情况下,保持字符串的格式不改变

最好在输出的信息量比较多,并且有固定格式要求的时候使用三引号,否则有点大材小用

主要有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)

五、将多个jupyter的.ipynb文件合并为一个 

借助nbmerge工具包

安装:pip install nbmerge

合并:nbmerge a.ipynb b.ipynb c.ipynb > hebing.ipynb

注:合并后的文件是utf-16编码的,需要转为utf-8编码才可以打开,可以使用Notepad++转码

六、Python文件.py转换为.exe可执行程序 

1、安装pyinstaller 

pip install pyinstaller

2、pyinstaller命令转换

pyinstaller -F quickStart.py

-F参数是指示生成exe文件,quickStart.py就是你想要转换为.exe文件的.py文件了

等待运行结束,运行结束后,我们会发现在我们存放项目的文件夹内会多出两个文件夹,则运行成功,其中我们打包好了的.exe文件就存放在dist文件夹内,然后你将你的exe文件发给别人,就可以运行了。

3、拓展

生成有图标的exe程序,添加参数-icon即可:

pyinstaller --icon=logo.ico -F quickStart.py

 注:py文件和用于做图标的照片需要存放于同一个文件夹中

Python随手记

将图片转换为图标文件的网站:http://www.bitbug.net/

七、if __name__ == '__main__':的作用 

一个python文件通常有两种使用方法:
第一种是作为脚本直接执行

第二种是 import 到其他的 python 脚本中被调用(模块重用)执行。
因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程。
在 if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
 

八、 Python第三方模块(库、包)的安装、卸载与查看

1、pip.ini 配置

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随手记

输出上面配置的源域名说明成功! 

2、查看自己的第三方库默认安装路径

python -m site
  • USER_BASE: 安装路径;
  • USER_SITE: 脚本路径。

更改默认路径,去python环境修改Lib 文件夹下的 site.py 文件即可。

分别修改 USER_SITE 、USER_BASE 的路径即可。

3、已安装的包

列出所有包:

pip list

查看某个包的安装位置:

pip show numpy

4、安装库

以numpy为例:

pip install numpy

 一键安装多个包:

import os

# 将需要安装的库名称放到列表中
libs = ['nbmerge', 'pyinstaller', 'numpy', 'jieba']
for lib in libs:
    # 遍历并安装库,注意了:install后面有一个空格!
    os.system("pip install " + lib)

 一键卸载多个包只需将install换为uninstall即可。文章来源地址https://www.toymoban.com/news/detail-449288.html

5、卸载库

pip uninstall numpy

到了这里,关于Python随手记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python随手记

    目录 一、eval(input( )) 和 int(input( )) 的区别 二、单引号、双引号、三引号的区别 1、单引号和双引号 2、三引号 三、随机数的生成  四、字符串中查找子串出现的所有位置  五、将多个jupyter的.ipynb文件合并为一个  六、Python文件.py转换为.exe可执行程序  1、安装pyinstaller  2、

    2024年02月05日
    浏览(25)
  • [oeasy]python0006_指法标准_键盘正位_你好世界_hello_world_单引号_双引号

    006_指法标准_键盘正位_你好世界_hello_world 上次 又进入了 python 又退出了 python 反复进入退出 恭喜您在终端里 存活 了下来! 键盘按键 作用 ↑ 上一条指令 ↓ 下一条指令 ← 向左移动光标一格 → 向右移动光标一格 编程 不都是 从 程序员的浪漫 开始吗??🤔 怎样才能 Hello

    2024年01月25日
    浏览(41)
  • python中trimesh的使用1(随手记)

    trimesh 是一个 Python 库,用于处理和操作 3D 模型。trimesh 支持多种 3D 文件格式,以下是一些常见的格式: 1.STL(Stereolithography) : 二进制和ASCII格式的STL文件是trimesh的基本输入和输出格式。 2.OBJ(Wavefront) : OBJ是一种常见的文本格式,用于表示3D模型的几何和材质信息。 3.PLY(

    2024年02月02日
    浏览(37)
  • unity之Input.GetKeyDown与Input.GetKey区别

    Input.GetKey 和 Input.GetKeyDown 是 Unity 中用于检测按键状态的两个不同函数。它们之间的区别在于何时触发。 Input.GetKey(KeyCode key): 这个函数会在用户按住指定的键时触发,会在每一帧中都执行,只要指定的键被按住。 会在按键按下的那一帧开始时触发,持续到按键释放的那一帧结

    2024年02月12日
    浏览(31)
  • Python爬虫—为表单数据快速添加单引号(2021最有效解决方法)

    在练习爬虫时,需要获取表单数据存入字典中,但是需要给原始数据一个个加单引号,相当麻烦,网上查找到的解决方法都不能够完全解决问题,于是我琢磨着自己解决了,现在就分享给大家 输入以下内容,并点亮图标 提醒一下,后面的‘,’也要加上(并非多余) 点击全部

    2023年04月09日
    浏览(24)
  • 9.Python从入门到精通—Python 字符串格式化,三引号,Unicode 字符串

    Python中的字符串格式化是指将一个字符串中的占位符替换为指定的值。Python中有多种字符串格式化的方法,以下是其中的几种常见方法: 使用百分号(%)进行字符串格式化 使用百分号(%)进行字符串格式化是Python中最早的字符串格式化方法。它的基本语法如下: 其中,格

    2024年03月20日
    浏览(57)
  • fish和pacman:“error: Unable to read input file: 是一个目录”报错的处理

    依照Arch Linux Wiki中,此页面介绍的方法,通过保持默认 shell 为 Bash 不变,然后添加 exec fish 到合适的 Bash 配置文件中,比如 .bashrc ,可以使得 Bash 会正常执行 /etc/profile 和 /etc/profile.d 中的所有配置文件。然而,注意到,添加代码 到 /root/.bashrc 中以后(root账户的登录shell为ba

    2024年02月02日
    浏览(46)
  • taro react/vue h5 中的上传input onchange 值得区别

    1、taro3+react 2、taro3+vue3

    2024年02月11日
    浏览(35)
  • Vue中@change、@input和@blur、@focus的区别及@keyup介绍

    @change在输入框发生变化且失去焦点后触发; @input在输入框内容发生变化后触发(在界面加载数据以前) @blur失去焦点就触发 @focus获得焦点就触发 注意: @change先于@blur @input和change的默认参数为输入内容,而blur的默认参数为dom节点。 在搜索下拉框选择数据后,即刻搜索的案

    2024年02月20日
    浏览(35)
  • input , change ,blur 事件的区别,以及在vue和react中的表现

    onInput Event 当一个 , , 或 元素的 value 被修改时,会触发 input 事件 onChange Event 当用户更改 、 和 元素的值时,change 事件在这些元素上触发。和 input 事件不同的是,并不是每次元素的 value 改变时都会触发 change 事件。 基于表单元素的类型和用户对元素的操作的不同,change 事件

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包