1.就地交换两个数字。
Python提供了一种直观的方式来分配和交换一行。请参考下面的例子。
x,y = 10,20print(x,y)
x,y = y,xprint(x,y)
#1(10,20)#2(20,10)
右边的任务会产生一个新的元组。而左边的那个会立即将那个(未被引用的)元组解包到名称和。
分配完成后,新的元组将被重新引用并标记为垃圾收集。变量的交换也最终发生。
10,结果= 1
[on_true] if [expression] else [on_false]
下面的语句是做同样的意思,即“ 如果y是9,则将10赋值给x,否则将20赋值给x ”。如果需要的话,我们可以扩展运营商的链接。
x =(classA if y == 1 else classB)(param1,param2)
在上面的例子中,classA和classB是两个类,其中一个类构造函数会被调用。
上述方法的共同问题是缺乏正确的缩进。如果我们尝试缩进,它会在字符串中插入空格。
所以最后的解决方案是将字符串拆分成多行,并将整个字符串括在括号中。
我们可以使用一个列表来初始化一个no。的变量。在打开列表的同时,变量的数量不应该超过no。列表中的元素。
如果你想知道你的代码中导入的模块的绝对位置,然后使用下面的技巧。
导入线程 穿线 导入套接字导入套接字打印(线程)打印(线程)打印(插座)打印(套接字)#1-
在Python控制台中,每当我们测试一个表达式或调用一个函数时,结果都会调度到一个临时名称_(一个下划线)。
>>> 2 + 1 2 + 1 33>>> _>>> _33>>>打印_>>> 打印_ 33
就像我们使用列表推导一样,我们也可以使用字典/集合理解。它们使用简单,效果也一样。这是一个例子。
注 -两个语句中只有<:>的区别。另外,要在Python3中运行上面的代码,用
我们可以在
导入pdb PDBpdb.set_trace()。set_trace ()
我们可以在脚本的任何地方指定
Python允许运行一个HTTP服务器,您可以使用它来共享服务器根目录中的文件。以下是启动服务器的命令。
python -m SimpleHTTPServer- 米SimpleHTTPServer
python3 -m http.server- m http 。服务器
上面的命令会在默认端口8000上启动一个服务器。你也可以使用一个自定义的端口作为上述命令的最后一个参数。
我们可以通过调用dir()方法来检查Python中的对象。这是一个简单的例子。
测试= [1,3,5,7]= [ 1 ,3 ,5 ,7 ] 打印(目录(测试))打印(目录(测试))
如果[1,3,5,7]中的m:米在[ 1 ,3 ,5 ,7 ]:
如果m == 1或者m == 3或者m == 5或者m == 7:m == 1 或者m == 3 或者m == 5 或者m == 7 :
或者,我们可以使用''{1,3,5,7}''而不是''[1,3,5,7]''作为''in''运算符,因为''set''可以通过O(1)来访问每个元素。
如果当前运行的Python引擎少于支持的版本,有时我们可能不想执行我们的程序。要做到这一点,你可以使用下面的代码片段。它还以可读格式打印当前使用的Python版本。
打印(“对不起,你没有在Python 3.5上运行\ n”)打印(“对不起,你没有在Python 3.5上运行\ n” )
打印(“请升级到3.5。\ n”)打印(“请升级到3.5。\ n” )
#以可读格式打印Python版本。#以可读格式打印Python版本。print(“当前Python版本:”,sys.version)打印(“当前Python版本:” ,SYS 。版本)
对不起,你没有在Python 3.5上运行对不起,你没有在Python 3.5上运行请升级到3.5。
>>> print''''.join(test) 打印“ 。加入(测试)
对于反转的元素([1,3,5]):print(element)元件在扭转([ 1 ,3 ,5 ):打印(元件) #1-> 5#1-> 5#2-> 3#2-> 3#3-> 1#3-> 1
[1,3,5] [:: - 1]1 ,3 ,5 ] [:: - 1 ]
testlist = [10,20,30]= [ 10 ,20 ,30 ] 对于我来说,枚举值(testlist):对于我,值在枚举(testlist ):
print(i,'':'',value)print (i ,'':'' ,value ) #1-> 0:10#1-> 0:10#1:20#1:20#3-> 2:30#3-> 2:30
没有太多的编程语言支持这个功能。但是,Python中的函数确实会返回多个值。
splat操作符提供了一个艺术化的方式来解压参数列表。为了清晰起见请参考下面的例子。
''sum'':lambda x,y:x + y,''sum'' :lambda x ,y :x + y ,
在Python 2.7中,一个32位的整数占用24个字节,而在Python 3.5中占用28个字节。为了验证内存使用情况,我们可以调用
导入系统 SYSX = 1= 1打印(sys.getsizeof(X))打印(SYS 。getsizeof (X ))# - > 24# - > 24
导入系统 SYSX = 1= 1打印(sys.getsizeof(X))打印(SYS 。getsizeof (X ))# - > 28# - > 28
你有没有看过你的Python应用程序消耗大量的资源,特别是内存?这是一个使用<__ slots="" __="">类变量在一定程度上减少内存开销的技巧。
导入系统 SYSclass FileSystem(object):class FileSystem (object ):
def __init __(self,files,folders,devices):def __init__ (self ,files ,folders ,devices ):
__slots__ = [''文件'',''文件夹'',''设备'']= [ ''文件'' ,''文件夹'' ,''设备'' ]
def __init __(self,files,folders,devices):def __init__ (self ,files ,folders ,devices ):
很明显,从结果中可以看出,内存使用量有所节省。但是当一个类的内存开销不必要的大时,你应该使用__slots__。只有在分析应用程序后才能做到这一点。否则,你会使代码难以改变,没有真正的好处。
如果你有一个嵌套列表或元组的元素的输入列表,然后使用下面的技巧。但是,这里的限制是它使用for循环。
def unifylist(l_input,l_target):unifylist (l_input ,l_target ):
如果isinstance(它,列表):如果isinstance (它,列表):
unifylist(it,l_target)(it ,l_target )
elif isinstance(it,tuple):elif isinstance (it ,tuple ):
unifylist(list(it),l_target)(列表(it ),l_target )
联系客服