最近在网上偶然发现了很多“奇怪”的Python代码片段。本文,我与你们分享其中一些。...Python中循环的“奇怪”现象 Python中布尔的“奇怪”现象 Python中字符串的“奇怪”现象 Python中加法的“奇怪”现象 Python中哈希的“奇怪”现象 函数中的字典键值是有效的!...Python中字符串操作的“奇怪”现象 CPython的“奇怪”现象 Python中语法的“奇怪”现象 斜杠:不能只用一个斜杠结束原始字符串 Python中数组的“奇怪”现象 你还见过什么怪像吗?
'ascii' codec can't encode characters in position 20-23: ordinal not in range(128) 在python main.py &无错误信息时...,使用 nohup python main.py & 时却出现 错误 'ascii' codec can't encode characters in position 20-23: ordinal...not in range(128) 其实是因为在将log信息输出到nohup.out文件的时候,会出现编码错误,所以没有使用nohup时不会有问题(因为没有涉及写文件) 在头部加上 # -*- coding...: utf-8 -*- 其实还是不够的,还需要在头部加入 import sys reload(sys) sys.setdefaultencoding('utf-8') 这样就可以正常运行了
在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,逻辑错误的种类有很多,占据了异常中大部分位置,下面就开始介绍一下这两个概念的相关知识。...模块 第二部分就是模块,我们有时可能会在不同文件之间利用同一个函数,笨一点的做法就是copy来copy去,Python提供了一个机制可以在将一个文件中的内容导入另一个文件中使用,这样的文件就可以称为模块...,需要注意的是并不是任何一个文件都可以当做模块,而必须是包含Python定义和声明的文件。...如果你有很多自定义的模块,为了更加规范、易找,那么你就可以将这些模块存入一个"包"中,需要注意的是,这个包中比如要有一个名为init.py的文件,这个文件可以为空但必须存在,然后导入包中模块的方式就是包名...Python本身也有自带的模块库,有一部分模块是内置于解释器之中,然后用户可以直接访问这类模块的接口,很大程度上提高了效率,比如time、sys等等。
注释是给你看的,而不是让计算机运行的程序。注释是程序文档的一部分,但是运行时会忽略掉它们。...---- 第一种——# 单行注释 在程序(或者其他任何东西)前面加一个“#“即可把它变成注释 #print(123) 这虽然是一个print函数,但是程序并不会运行它,因为它的前面加了“#”,解释器会自动忽略它们...行末注释 print(123)#这是一个输出123的程序 注:在“#”后的程序皆会被理解为注释(本行) 多行注释 #123 #234 #234444 在任何一行程序前加上“#”都会变为注释(下面会介绍更简单的方法...#”都会变为注释(下面会介绍更简单的方法) ---- """ 这是一个字符串,但是毫无作用,所以也可以看做一个注释(尽管严格意义上来讲并不是) """11 11 11 11 1""" 注:他是可以跨行的
不修改代码前好好的,刚加了些代码运行就不可以了,然后注释重新编译还是不行。 你可能不小心改到其他东西了,建议使用ctrl + z恢复或回滚版本。...---- 程序以前还可以运行的,代码也没修改,今天就运行不了,非常诡异。 程序可能有耦合与程序相关的操作,比如网络连接,数据库,串口等设备。建议打断点调试看看卡在哪里运行不了。...---- 明明只有1个编译错误,尝试修改编译错误却导致几百个错误出来了,有些崩溃。 几百个错误通常是第一个错误引起,尝试修改第一个错误,其他错误有很大概率也修正了。...---- debug版本可以运行,release版本不可以运行,这也太奇怪了吧。 大多是程序导致,可以尝试进行一下操作: 1. 尝试健壮代码,比如避免悬空指针,变量初始化,枚举给初始值等。...找适合的依赖库,比如windows下debug版本第三方库可能与release版本的第三方依赖库不一样。 3. 使用打印或调试找出不能运行的地方。
模块:随着程序变的越来越大 为了便于维护 需要把它分为多个文件 为此python允许把定义放入一个文件 然后在其他脚本中将其作为模块导入 创建模块: 将相关的语句和定义放入与模块同名的文件中....py文件相关的所有语句 要在导入后访问命名空间的内容 只要使用该模块的名称作为前缀即可 如:module.numValue 如果要使用不同的名称导入模块 可以给import语句加上可选的as 限定符...我们已经接触过__doc__获取文档中的文档说明 交互式模式运行python时 可使用help()命令获得有关内置模块和python其他方面的信息 单独输入help()将获得一般信息 而输入help(...‘moduleName') 则可获得具体模块的信息 如果提供函数名称 help()命令还可以返回该函数的详细信息 总结: 1,python中模块的概念 :将函数的定义保存起来,然后在其他脚本中导入使用...如: import module as fun ; 如要省略调用模块中函数时的前缀 则可以使用 from module import fun 的形式
Python中的sys模块 sys中的常用方法 函数名 参数 介绍 举例 返回值 modules 无 Py启动时加载的模块 sys.modules( ) 列表 path 无 返回当前py的环境路径 sys.path...getdefaultencoding 无 获取系统编码 sys.getdefaultencoding() 字符串 platform 无 获取当前系统平台 sys.platform() 字符串 version(属性) 无 获取python
Python中的日志模块 日志的作用 日记 程序行为 重要信息记录 日志的等级 debug info warning error critical logging模块的使用 logging.basicConfig...d://back.log' filemode 输入模式 filemode = "w" format具体格式 格式符 含义 %(levelname)s 日志级别名称 %(pathname)s 执行程序的路径...%(filename)s 执行程序名 %(lineno)d 日志的当前行号 %(asctime)s 打印日志的时间 %(message)s 日志信息 format = '%(asctime)s %(...filename)s[line:%(lineno)d] %(levelname)s %(message)s' (常用的格式) 代码 # coding:utf-8 import logging import...') log.warning('这是一个警告') log.error('这是一个重大的错误信息') log.debug('这是一个debug')
注意,本文所有崩溃的原因都是同一个 EXC_BAD_ACCESS (code=1, address=0x11f645b98) image-20210423232626879 第一个堆栈:字典扩容 image
PYTHON 代码,尤其是别人写的代码看不懂。怎么办? 其实PYTHON中也提供了类似于C语言中用于debug 的 gdb。它叫做pdb。结合本人自己的学习,进行简单的举例,以做备忘和补偿学习。...(在上面的例子中执行的指令为n)。...前提,我知道了 main() 函数位于 72行(函数位于文件中的哪一行,这个靠自己了) > /home/test/python/shadowsocks/shadowsocks/local.py(18)...(): (Pdb) 以上调试中,用的了 l(list) 指令,这个指令的意思为显示代码。.../shadowsocks/shadowsocks/local.py:41 (Pdb) 五、p(print) 打印 这个指令的功能主要用于打印程序中的变量值 (Pdb) n > /home/test/python
讲解一下python中的正则 re 主要讲解4个方面 re.match re.search re.findall re.sub 本次视频的代码 #coding:utf-8''' Created on 2018...rlt.group(4)) rlt = ptn.findall(dzm) print(rlt) rlt = ptn.sub('hns',dzm) print(rlt) 更多内容欢迎到视频中查看
模块调用的方法 import 模块名 from 模块名 import 方法名 emmm……python官方的开源模块库下载地址(防遗忘) https://pypi.python.org...第二个元素在sys.argv列表中索引为【1】 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息...缺点:只能在python中使用,存储数据占空间大 shelve模块(不怎么了解,copy的): shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python... 日志模块可以记录正常的访问操作日志,而且可以记录错误、警告等信息,可以更直观的告诉开发应该注意哪里的问题。 ...(正则) 正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re。
Python AppJar模块简化了GUI开发,这对于设计用户友好的软件界面是必要的。AppJar是Python中可用于创建图形用户界面的众多工具和框架之一。...什么是 AppJar 模块? AppJar模块是一个改进且用户友好的工具包,使在Python中设计图形用户界面(GUI)变得更加容易。...AppJar模块的特点 Python AppJar 模块提供了多种功能,可以简化和改进 GUI 开发。...这些功能使AppJar成为Python中GUI开发的强大而方便的工具包,可满足初学者和经验丰富的程序员的需求。...单击任何按钮将显示一个带有按钮标签的信息框。 结论 最后,Python AppJar模块为GUI创建提供了一种简单且以用户为中心的技术。
对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。 模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。...和java中的main方法一样,如果我们想要在模块中进行一些测试工作,有没有类似java中main方法的写法呢?...我们这样来执行这个模块: python fibo.py 复制代码 以脚本执行的情况下,模块的 __name__ 属性会被赋值为 __main__ , 这也是例子中为什么要这样写的原因...同样的在Python中也有包。...__init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。 当导入的时候, python就会在 sys.path 路径中搜索该包。
简介:JSON(JavaScriptObjectNotation)格式最初是为JavaScript开发的,但随后成了一种常见文件格式,被包括python在内的众多语言采用。...模块JSON让你能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可以使用JSON在python程序之间分享数据。...更重要的是,JSON数据格式并非python专用的,这让你能够将JSON格式存储的数据与使用其他编程语言的分享。很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供可视化的数据。...不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中。用户关闭程序时,你几乎总是要保存他们提供的信息。 ...例:使用函数json.dump( )将数字列表存储到文件中,使用json.load( )将列表读取到内存中,相当于C语言中的文件读写。
python的内置模块中对于命令行的解析模块共两个getopt 和 optparse 。不过getopt过于简单,往往不能满足需求。此时可以使用optparse模块。...这个模块相对于getopt更新,功能更强大。 那么如何使用optparse模块呢? optparse 模块的官方文档给出了很详细的说明。...第一步、导入模块,并在主函数中创建实例 from optparse import OptionParser [...] parser = OptionParser() 第二步、使用add_option定义需要的...以上三个步骤,就是使用optparse模块的完整体现。不过在第二步中add_option中存在很多影响pars_args行为的属性,将在下面逐步记录解释。...具体了解,还需参考相应的官方手册:https://docs.python.org/2/library/optparse.html
创建矩阵(采用ndarray对象)对于python中的numpy模块,一般用其提供的ndarray对象。 创建一个ndarray对象很简单,只要将一个list作为参数即可。 ...=0 ) 等价于 np.vstack( (a1,a2) )np.concatenate( (a1,a2), axis=1 ) 等价于 np.hstack( (a1,a2) )通过函数创建矩阵numpy模块中自带了一些创建...例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。...表格中默认导入了numpy模块,即 import numpy as np a为ndarray对象。...a1*a2# 而python中的a1*a2相当于matlab中的a1.
queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue。...python3直接queue即可 在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换...所以多线程结合queue会好的很多。案例:超级ping(多线程版) - _nul1 - 博客园) queue模块有三种队列及构造函数: Python queue模块的FIFO队列先进先出。...Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。...level 3 job Job: level 10 job Job: level 1 job for: level 1 job for: level 3 job for: level 10 job queue模块中的常用方法
小师妹:F师兄你看,以ShortBuffer为例,它的子类怎么后面都带一些奇奇怪怪的字符: ?...我们知道在java中底层的最小存储单元是Byte,一个Byte是8bits,用16进制表示就是Ox00-OxFF。...java中除了byte,boolean是占一个字节以外,好像其他的类型都会占用多个字节。...目前主流的两大CPU阵营中,PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。...aligned对齐的意思,表示JVM中的对象都是以8字节对齐的,如果对象本身占用的空间不足8字节或者不是8字节的倍数,则补齐。 还是用JOL来分析String对象: ?
如何用Python来进行查询和替换一个文本字符串?...可以使用re模块中的sub()函数或者subn()函数来进行查询和替换, 格式:sub(replacement, string[,count=0])(replacement是被替换成的文本,string...sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量 Python里面match()和search()的区别?...re模块中match(pattern,string[,flags]),检查string的==开头==是否与pattern匹配,这个是全匹配,但是只要是在开头匹配就行。...re模块中re.search(pattern,string[,flags]),在string搜索pattern的第一个匹配值,而且是对当前的字符串的全匹配。
领取专属 10元无门槛券
手把手带您无忧上云