小编oro*_*aki的帖子

Python`如果x不是None`或`if not x is None`?

我一直认为if not x is None版本更清晰,但谷歌的风格指南PEP-8都使用if x is not None.是否存在任何轻微的性能差异(我假设没有),是否存在任何一个真正不合适的情况(使另一个成为我公约的明显赢家)?*

*我指的是任何单身人士,而不仅仅是None.

...比较像无的单身人士.使用是否.

python coding-style boolean-expression

687
推荐指数
7
解决办法
69万
查看次数

VIM for Windows - 我输入什么来保存和退出文件?

使用WinXP我意外地输入git commit -a而不是git commit -am "My commit message",现在我正在查看我的CMD提示符,其中填写了我的提交消息的文件版本("请输入您的提交消息...").我已将消息添加到顶部,但现在我无法弄清楚如何保存和离开.我试着按CTRL+ W+ Q,但它没有做什么,只是添加^光标所在的位置.

esc先尝试过,然后是CTRL+ W+ Q,但它说No write since last change (add ! to override).

git vim windows-xp git-commit

258
推荐指数
6
解决办法
15万
查看次数

如何格式化小数以始终显示2位小数?

我想要显示:

4949.00

和:

54.954.90

无论小数的长度或是否有任何小数位,我想显示Decimal2位小数,我想以有效的方式做到这一点.目的是显示货币价值.

例如, 4898489.00

python string-formatting

214
推荐指数
9
解决办法
40万
查看次数

Python 3:UnboundLocalError:赋值前引用的局部变量

以下代码给出了错误UnboundLocalError: local variable 'Var1' referenced before assignment:

Var1 = 1
Var2 = 0
def function(): 
    if Var2 == 0 and Var1 > 0:
        print("Result One")
    elif Var2 == 1 and Var1 > 0:
        print("Result Two")
    elif Var1 < 1:
        print("Result Three")
    Var1 =- 1
function()
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?谢谢你的帮助!

python function python-3.x

174
推荐指数
5
解决办法
49万
查看次数

为什么split()结果中返回空字符串?

什么是点'/segment/segment/'.split('/')回来['', 'segment', 'segment', '']

注意空元素.如果你正在拆分碰巧位于第一个位置和一个字符串末尾的分隔符,它会给你从每一端返回空字符串的额外值是多少?

python string split

107
推荐指数
6
解决办法
5万
查看次数

Python - 在命令行模块运行期间添加PYTHONPATH

我想跑:

python somescript.py somecommand
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我需要PYTHONPATH包含一个特定的目录.我不能只将它添加到我的环境变量中,因为我想要添加的目录会根据我正在运行的项目而更改.有没有办法PYTHONPATH在运行脚本时改变?注意:我甚至没有PYTHONPATH变量,因此在运行此脚本期间,我不需要担心附加到它而是覆盖它.

python pythonpath

81
推荐指数
3
解决办法
12万
查看次数

随机几乎没有随意?

我这样做是为了测试randint的随机性:

>>> from random import randint
>>>
>>> uniques = []
>>> for i in range(4500):  # You can see I was optimistic.
...     x = randint(500, 5000)
...     if x in uniques:
...         raise Exception('We duped %d at iteration number %d' % (x, i))
...     uniques.append(x)
...
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
Exception: We duped 887 at iteration number 7
Run Code Online (Sandbox Code Playgroud)

我尝试了大约10倍以上,我得到的最好结果是在转发器之前迭代了121次.这是您从标准库中获得的最佳结果吗?

python random birthday-paradox

74
推荐指数
8
解决办法
4万
查看次数

Django:我应该如何存储货币价值?

我在这里遇到了范式问题.我不知道是否应该将钱存储为Decimal(),或者我是否应该将其存储为字符串并将其自身转换为小数.我的理由是这样的:

PayPal需要2个小数位,所以如果我有一个49美元的产品,PayPal希望看到49.00遇到问题.Django的DecimalField()不设置小数.它只存储最大小数位数.所以,如果你有49个,并且你将字段设置为2个小数位,它仍然将它存储为49.我知道Django基本上是类型转换,当它从数据库反序列化为Decimal时(因为数据库)没有十进制字段),所以我并不完全关心速度问题,就像我遇到这个问题的设计问题一样.我想做可扩展性最好的事情.

或者,更好的是,是否有人知道如何配置django DecimalField()以始终使用TWO_PLACES格式样式进行格式化.

python django currency decimal django-models

63
推荐指数
5
解决办法
3万
查看次数

使用可选参数创建装饰器

from functools import wraps

def foo_register(method_name=None):
    """Does stuff."""
    def decorator(method):
        if method_name is None:
            method.gw_method = method.__name__
        else:
            method.gw_method = method_name
        @wraps(method)
        def wrapper(*args, **kwargs):
            method(*args, **kwargs)
        return wrapper
    return decorator
Run Code Online (Sandbox Code Playgroud)

例如:下面的装饰my_functionfoo_register的,而不是它曾经做对decorator.

@foo_register
def my_function():
    print('hi...')
Run Code Online (Sandbox Code Playgroud)

示例:以下按预期工作.

@foo_register('say_hi')
def my_function():
    print('hi...')
Run Code Online (Sandbox Code Playgroud)

如果我希望它在两个应用程序中正常工作(一个使用method.__name__和一个传递名称),我必须检查内部foo_register是否第一个参数是装饰器,如果是,我必须:( return decorator(method_name)而不是return decorator).这种"检查它是否可以调用"似乎非常hackish.有没有更好的方法来创建这样的多用途装饰器?

PS我已经知道我可以要求装饰器被调用,但这不是一个"解决方案".我希望API感觉自然.我的妻子喜欢装饰,我不想破坏它.

python decorator wrapper

56
推荐指数
5
解决办法
2万
查看次数

Python virtualenv问题

我在Windows XP上使用VirtualEnv.我想知道我的大脑是否正确缠绕它.

我跑了virtualenv ENV,它创造了C:\WINDOWS\system32\ENV.然后我将PATH变量改为include C:\WINDOWS\system32\ENV\Scripts而不是C:\Python27\Scripts.然后,我检查了Django C:\WINDOWS\system32\ENV\Lib\site-packages\django-trunk,更新了我的PYTHON_PATH变量以指向新的Django目录,并继续easy_install其他事情(当然进入我的新C:\WINDOWS\system32\ENV\Lib\site-packages目录).

我明白我为什么要使用VIRTUALENV这样我就可以在同一台机器上运行的Django的多个版本,及其他图书馆,但这并不意味着对我有根本上改变我的环境之间进行切换PATHPYTHON_PATH变量?那么,我从开发一个Django项目开始,该项目在一个被调用的环境中使用Django 1.2 ENV,然后改变我的PATH等等,以便我可以使用一个名为ENV2Django开发版本的环境?

这基本上是它,还是有一些更好的方法来自动完成所有这些(我可以在Python代码中更新我的路径,但这需要我在我的应用程序中编写机器特定的代码)?

此外,这个过程与在Linux上使用VirtualEnv相比如何(我是Linux的初学者).

python linux windows virtualenv

51
推荐指数
2
解决办法
9万
查看次数