Python中的那些“坑”】的更多相关文章

python中的这些坑,早看早避免. 说一说python中遇到的坑,躲坑看这一篇就够了 传递参数时候不要使用列表 def foo(num,age=[]): age.append(num) print("num",num) return age print(foo(1)) print(foo(2)) print(foo(3)) 上面的代码输出的结果并不是我们预期的那样,打印出三个数组[1],[2],[3]. 而是下面这样. num 1 [1] num 2 [1, 2] num 3 [1,…
1.三元表达式之坑 很显然,Python把第一行的(10 + 4)看成了三元表达式的前部分,这个坑是看了<Python cookbook>(P5)中学到的,书中的代码: 2.Python生成器(yield)+递归 前两天一直纠结python的生成器递归该怎么写,今天看了os.walk()的代码恍然大悟,编程真是博大精深啊!不多说,上代码: from os import path def walk(top, topdown=True, onerror=None, followlinks=Fals…
1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: >>>a = 257 >>>b = 257 >>>a is b # 第三组: >>>a = 257; b = 257 >>>a is b 问题来了,这三组代码的运行结果分别是什么呢?答案是True.False和True…
例如Python的代码是这个样子的. # coding=<utf-> # -*- coding: utf- *- import requests import urllib def ClearDirect():#直接删除 print('sadsa') C#调用 static void Main(string[] args) { ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境 var engine = pyRuntime.…
v = [lambda :x for x in range(10)] print(v) #[lambda :x,lambda :x....]10个匿名函数 print(v[0]) #lambda :x print(v[0]()) #9 v = (lambda :x for x in range(10)) print(v) #生成器 # print(v[0]) #报错:生成器不能索引取值 # print(v[0]()) #报错:生成器不能索引取值 print(next(v)) #lambda :x…
函数默认参数使用可变对象 def use_mutable_default_param(idx=0, ids=[]): ids.append(idx) print(idx) print(ids) use_mutable_default_param(idx=1) use_mutable_default_param(idx=2) 输出 1 [1] 2 [1, 2] 函数本身也是一个对象,默认参数绑定于这个函数对象上 append这类方法会直接修改对象,所以下次调用此函数时,其绑定的默认参数已经不再是空…
python中的round函数不能直接拿来四舍五入,一种替代方式是使用Decimal.quantize()函数. 具体内容待补. >>> round(2.675, 2) 2.67 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确. # -*- coding: utf-8 -*- from decimal import Decimal, ROUND_HALF_UP class NumberUtil(object): @staticmethod def…
我们知道,python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串 下面回到重点,使用json.dumps时,一般的用法为: >>> obj={"name":"测试"} >>> json.dumps(obj)'{"name": "\\u6d4b\\u8bd5"}' >>> print json.dumps(obj…
今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用. 我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个python文件,分别用a.py:b.py:c.py来表示,目录树如下. 每一个的初始代码为一个简单的print函数. #a.py def out_a(): print("I am a.py") if __name__ == '__main__': out_a() #b.py def ou…
python 中全局变量和局部变量在使用过程中的一个容易出错的地方 什么是全局变量 python中,在函数外部声明的变量可以叫做全局变量. x = 10 def fn1(): pass fn1() 什么是局部变量 python中,在函数内部声明的变量通常情况下称之为局部变量,它的作用域也仅限在函数内部. x = 10 # 全局变量 def fn1() : y = 20 # 局部变量,只能够在函数内部中使用 fn1() # 调用函数 容易出错的一个点 在使用全局变量和局部变量的过程中,有一种情况十…