包含标签 python 的文章

Python 同级目录import报错

在使用protobuf时,我们自己了各种Options的时候,在生成的python文件会在同级目录中引用,所以这个时候我们不能做到,加个__init__.py文件了事然后在文件里面写 import mudole.file这样的代码,因为我们自己无法控制 解决方法如下,在__init__文件中加入以下代码: 1 2 3 4 5 6 7 import sys import os sys.path.append(os.path.dirname('mudole_name/')) ……

阅读全文

flask返回自定义的Response

from json import dumps from flask import Response from flask_api import status from protocol.errors_pb2 import * class ErrorResponse(Response): def __init__(self, err_code, err_msg=''): result = dumps(dict(code=err_code, msg=err_msg)) Response.__init__(self, result, mimetype='application/json') class JSONResponse(Response): def __init__(self, data, msg=''): result = dumps(dict(data=data, code=Error_None, msg=msg)) Response.__init__(self, result, mimetype='application/json') class UnauthorizedResponse(Response): def __init__(self): data = dumps(dict(msg="need login", code=Error_NeedLogin, data=None)) Response.__init__(self, data, mimetype='application/json', status=status.HTTP_401_UNAUTHORIZED) 注意:一定要使用json.dumps来转换最后的结果……

阅读全文

Django上传图片

model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 from django.db import models class Picture(models.Model): path = models.ImageField(upload_to='share_pictures/') name = models.CharField(max_length = 50) class Meta: db_table = "picture" def __str__(self): return self.name forms 1 2 3 4 5 6 7 8 9 10 11 from django import forms class ImageForm(forms.……

阅读全文

Python any() 函数

any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。 元素除了是 0、空、FALSE 外都算 TRUE。 如果想要测试一个list中是否有一个是1可以使用any,例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 x, y, z = 0, 1, 0 if x == 1 or y == 1 or z == 1: print('passed') if 1 in (x, y, z): print('passed') # These only test for truthiness: if x or y or z: print('passed') if any((x, y, z)): print('passed') ……

阅读全文

Python如何合并两个字典

Python 3 1 2 3 4 5 6 7 x = {'a': 1, 'b': 2} y = {'b': 3, 'c': 4} z = {**x, **y} Python 2 1 2 3 z = dict(x, **y) Python中只能处理这种简单的合并,如果出现相同的key,Python会选择覆盖 ……

阅读全文

Python中下划线的5种含义

单前导下划线 _var 当涉及到变量和方法名称时,单个下划线前缀有一个约定俗成的含义。 它是对程序员的一个提示 - 意味着Python社区一致认为它应该是什么意思,但程序的行为不受影响。 下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。 该约定在PEP 8中有定义。 单末尾下划线 var_ 有时候,一个变量的最合适的名称已经被一个关键字所占用。 因此,像class或def这样的名称不能用作Python中的变量名称。 在这种情况下,你可以附加一个下划线来解决命名冲突。总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。 双前导下划线 __var 到目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。 而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。 双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。 这也叫做名称修饰(name mangling) - 解释器更改变量的名称(例如:class名为Test, 变量名为__a,那么__a会被Python解释器重写属性名为_Test__a),以便在类被扩展的时候不容易产生冲突。名称修饰会影响在一个类的上下文中,以两个下划线字符(“dunders”)开头的所有名称。 双前导和双末尾下划线 var 如果一个名字同时以双下划线开始和结束,则不会应用名称修饰。 由双下划线前缀和后缀包围的变量不会被Python解释器修改。 单下划线 _ 按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。你也可以在拆分(unpacking)表达式中将单个下划线用作“不关心的”变量,以忽略特定的值。 同样,这个含义只是“依照约定”,并不会在Python解释器中触发特殊的行为。 单个下划线仅仅是一个有效的变量名称,会有这个用途而已。 除了用作临时变量之外,“_”是大多数Python REPL中的一个特殊变量,它表示由解释器评估的最近一个表达式的结果。 Python下划线命名模式 - 小结 evernotecid://9326179B-5200-4478-B32E-B919B94B243C/appyinxiangcom/21231346/ENResource/p4……

阅读全文

Python源码阅读——PyAPI_FUNC,PyAPI_DATA,PyMODINIT_FUNC

PyAPI_FUNC(type):申明一个公共的Python API函数并且返回一个PyObject*代表对应的类型 PyAPI_DATA(type): 声明公共的Python数据和类型 PyMODINIT_FUNC: 一个Python模块初始化函数。如果这些函数是在Python内核的,他们就提供Python的内核。如果是一个扩展的模块。那可能需要拓展库支持平台的外部连接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 /* All windows ports, except cygwin, are handled in PC/pyconfig.……

阅读全文

Python源码阅读——基础

阅读源码的版本: cmmit id: 9e4f2f3a6b8ee995c365e86d976937c141d867f8 在阅读Python的源码时,我们第一个想到的就是先去阅读Python的数据结构的源码。 那么,我们先去挨着看看。 数据结构 long 1 2 3 4 5 6 7 8 9 10 11 struct _longobject { PyObject_VAR_HEAD digit ob_digit[1]; }; list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements.……

阅读全文

关于Python的导入覆盖解决办法

这种问题一般来说还是不会引起的,可能会出现在datetime和time这样类型的模块中。 例如: 1 2 3 4 5 import datetime from datetime import datetime 如果写在一个文件到倒是一眼能够看出来,主要是在公司这种多人协同合作的时候,导入相关模块的时候会出现覆盖的情况需要注意。 我的建议是将系统的模块放在最后面导入,自己写的模块放在前面,不过最好跟公司的人统一一下,统一使用import datetime就行。……

阅读全文