Tag: python

什么是Python类的__dict __.__ dict__属性?

>>> class A(object): pass … >>> A.__dict__ <dictproxy object at 0x173ef30> >>> A.__dict__.__dict__ Traceback (most recent call last): File "<string>", line 1, in <fragment> AttributeError: 'dictproxy' object has no attribute '__dict__' >>> A.__dict__.copy() {'__dict__': <attribute '__dict__' of 'A' objects> … } >>> A.__dict__['__dict__'] <attribute '__dict__' of 'A' objects> # What is this object? 如果我做了A.something = […]

django-rest-framework 3.0在嵌套序列化器中创build或更新

用Django的其余框架3.0,并有这些简单的模型: class Book(models.Model): title = models.CharField(max_length=50) class Page(models.Model): book = models.ForeignKey(Books, related_name='related_book') text = models.CharField(max_length=500) 鉴于这个JSON请求: { "book_id":1, "pages":[ { "page_id":2, "text":"loremipsum" }, { "page_id":4, "text":"loremipsum" } ] } 我如何编写一个嵌套的序列化程序来处理这个JSON,给定的book每个page可以创build一个新的页面或更新(如果存在)。 class RequestSerializer(serializers.Serializer): book_id = serializers.IntegerField() page = PageSerializer(many=True) class PageSerializer(serializers.ModelSerializer): class Meta: model = Page 我知道用实例实例化序列化器会更新当前的序列化器,但是如何在嵌套序列化器的create方法中使用它?

在Python 3中加速数以百万计的正则expression式replace

我正在使用Python 3.5.2 我有两个名单 约750,000个“句子”(长串) 我想从我的75万个句子中删除约2万个“单词”的列表 所以,我必须循环使用750,000个句子,并且执行大约20000次replace, 但是只有我的单词实际上是“单词”,而不是更大string的一部分。 我正在通过预编译我的单词,使它们被\b元字符包围 compiled_words = [re.compile(r'\b' + word + r'\b') for word in my20000words] 然后我循环通过我的“句子” import re for sentence in sentences: for word in compiled_words: sentence = re.sub(word, "", sentence) # put sentence into a growing list 这个嵌套的循环每秒处理大约50个句子 ,这很好,但是处理所有的句子还需要几个小时。 有没有一种方法来使用str.replace方法(我相信是更快),但仍然要求replace只发生在字边界 ? 另外,有没有办法加快re.sub方法? 如果我的单词的长度大于我的句子的长度,我已经通过跳过re.sub略微提高了速度,但是这并没有太大的改进。 谢谢你的任何build议。

Pythonic方式结合FOR循环和IF语句

我知道如何使用for循环和if语句在单独的行上,如: >>> a = [2,3,4,5,6,7,8,9,0] … xyz = [0,12,4,6,242,7,9] … for x in xyz: … if x in a: … print(x) 0,4,6,7,9 而且我知道当语句很简单时,我可以使用列表理解来组合这些语句,比如: print([x for x in xyz if x in a]) 但是我无法find的是一个很好的例子(复制和学习),演示了一个复杂的命令集合(不仅仅是“print x”),这个命令在for循环和一些if语句的结合之后发生。 我期望的东西是这样的: for x in xyz if x not in a: print(x…) 这是不是python应该工作的方式?

如何在python中“testing”NoneType?

我有一个有时返回一个NoneType值的方法。 那么我怎样才能问一个variables是一个NoneType? 例如,我需要使用if方法 if not new: new = '#' 我知道这是错误的方式,我希望你明白我的意思。

整合Python和C ++

我正在学习C ++,因为它是一种非常灵活的语言。 但对于像Twitter,Facebook,Delicious等互联网的东西,Python似乎是一个更好的解决scheme。 是否有可能将C ++和Python集成到同一个项目中?

使用Django的ORM作为独立的

可能重复: 只使用Django的一些部分? 只使用Django的数据库部分 我想单独使用Django ORM。 尽pipe在谷歌search了一个小时,我仍然留下了几个问题: 是否需要我使用setting.py,/ myApp /目录和modules.py文件来设置我的Python项目? 我可以创build一个新的models.py并运行syncdb以自动设置表和关系,还是只能使用现有的Django项目中的模型? 似乎有很多关于PYTHONPATH的问题。 如果你不打电话给现有的模型,这是需要的? 我猜最简单的事情是让别人发布一个基本的模板或stream程,澄清文件的组织结构,例如: db/ __init__.py settings.py myScript.py orm/ __init__.py models.py 基本要领: # settings.py from django.conf import settings settings.configure( DATABASE_ENGINE = "postgresql_psycopg2", DATABASE_HOST = "localhost", DATABASE_NAME = "dbName", DATABASE_USER = "user", DATABASE_PASSWORD = "pass", DATABASE_PORT = "5432" ) # orm/models.py # … # myScript.py # import […]

__lt__而不是__cmp__

Python 2.x有两种方法来重载比较运算符__cmp__或“丰富的比较运算符”,如__lt__ 。 据说比较超负荷的比较优先,但为什么这样呢? 丰富的比较运算符更容易实现,但是您必须以几乎相同的逻辑来实现其中的几个运算符。 但是,如果你可以使用内build的cmp和tuple命令,那么__cmp__会变得非常简单,并且可以完成所有的比较: class A(object): def __init__(self, name, age, other): self.name = name self.age = age self.other = other def __cmp__(self, other): assert isinstance(other, A) # assumption for this example return cmp((self.name, self.age, self.other), (other.name, other.age, other.other)) 这种简单性似乎满足了我的需要比超载所有6(!)丰富的比较好得多。 (但是,如果依靠“交换的论点”/反映的行为,则可以把它归结为“正义”4,但是,我认为这会导致并发症的净增加。) 是否有任何不可预见的缺陷,我需要知道如果我只重载__cmp__ ? 我知道< , <= , ==等操作符可以被重载用于其他目的,并且可以返回任何他们喜欢的对象。 我并不是在质疑这种方法的优点,而仅仅是关于使用这些运算符进行比较的意义上的差异,这些差异意味着数字。 更新:正如克里斯托弗指出的 , cmp正在3.x中消失。 是否有任何替代品,使得执行比较像上面的__cmp__一样简单?

如何使用Django Rest Framework包含相关的模型字段?

假设我们有以下模型: class Classroom(models.Model): room_number = [….] class Teacher(models.Model): name = […] tenure = […] classroom = models.ForeignKey(Classroom) 让我们说,而不是像ManyRelatedPrimaryKeyField函数得到这样的结果: { "room_number": "42", "teachers": [ 27, 24, 7 ] }, 有它返回的东西,包括完整的相关模型表示,如: { "room_number": "42", "teachers": [ { 'id':'27, 'name':'John', 'tenure':True }, { 'id':'24, 'name':'Sally', 'tenure':False }, ] }, 这可能吗? 如果是这样,怎么样? 这是一个坏主意吗?

检查networking连接

我想看看我是否可以访问在线API,但为此我需要访问Internet。 我怎样才能看到是否有一个连接可用和使用Python的积极?