小编Luk*_*lor的帖子

PEP8 - 使用sys.path导入不在文件顶部

问题

PEP8有一条关于将导入放在文件顶部的规则:

导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前.

但是,在某些情况下,我可能想要做以下事情:

import sys
sys.path.insert("..", 0)

import my_module
Run Code Online (Sandbox Code Playgroud)

在这种情况下,pep8命令行实用程序标记我的代码:

E402模块级别导入不在文件顶部

实现PEP8符合sys.path修改的最佳方法是什么?

为什么

我有这个代码,因为我遵循Hitchhiker的Python指南中给出的项目结构.

该指南建议我有一个my_module文件夹,与文件夹分开tests,两者都在同一目录中.如果我要访问my_moduletests,我想我需要添加..sys.path

python pep8 python-3.x

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

如何在iOS 7中以编程方式隐藏状态栏?

,如何以编程方式隐藏?我正在使用XCode 4.6.1(),我想在XCode本身实现它.

iphone statusbar hide ios6.1 ios7

35
推荐指数
4
解决办法
3万
查看次数

Python相对导入脚本有两个级别

在过去的一小时里,我一直在为我的包裹中的进口做斗争.

我有一个像这样的目录结构:

main_package
 |
 | __init__.py
 | folder_1
 |  | __init__.py
 |  | folder_2
 |  |  | __init__.py
 |  |  | script_a.py
 |  |  | script_b.py
 |
 | folder_3
 |  | __init__.py
 |  | script_c.py
Run Code Online (Sandbox Code Playgroud)

我想访问代码script_b.py以及script_c.py来自的代码script_a.py.我怎样才能做到这一点?

如果我把一个简单的import script_b内部script_a.py,当我跑

from main_package.folder_1.folder_2 import script_b
Run Code Online (Sandbox Code Playgroud)

我遇到了一个

ImportError: no module named "script_b"
Run Code Online (Sandbox Code Playgroud)

为了访问script_c.py,我不知道.我无法找到有关访问两级文件的任何信息,但我知道我可以导入一级文件

from .. import some_module
Run Code Online (Sandbox Code Playgroud)

如何从中访问这两个文件script_a.py

python directory-structure python-import python-3.x relative-import

30
推荐指数
1
解决办法
2万
查看次数

装饰器,用于在首次访问后缓存返回值的类方法

我的问题,为什么

我正在尝试为类方法编写装饰器@cachedproperty.我希望它的行为,以便在首次调用该方法时,该方法将替换为其返回值.我也希望它的行为类似于@property不需要显式调用它.基本上,它应该是无法区分的,@property除了它更快,因为它只计算一次值然后存储它.我的想法是,这不会减慢实例化的速度,就像定义它一样__init__.这就是我想要这样做的原因.

我尝试了什么

首先,我试图覆盖它的fget方法property,但它是只读的.

接下来,我想我会尝试实现一个需要第一次调用的装饰器,然后缓存值.这不是我永远不需要调用的属性类型装饰器的最终目标,但我认为这将是一个更容易解决的问题.换句话说,对于稍微简单的问题,这是一个无效的解决方案.

我试过了:

def cachedproperty(func):
    """ Used on methods to convert them to methods that replace themselves 
        with their return value once they are called. """
    def cache(*args):
        self = args[0] # Reference to the class who owns the method
        funcname = inspect.stack()[0][3] # Name of the function, so that it can be overridden.
        setattr(self, funcname, func()) # Replace the function with its …
Run Code Online (Sandbox Code Playgroud)

python caching decorator python-decorators

25
推荐指数
3
解决办法
7914
查看次数

游戏生活模式执行不正确

我的Conway在Python中的生活游戏实现似乎没有正确遵循规则,我无法弄清楚可能出错的地方.当我将最终配置放入Golly时,它会继续超出我的范围.

我首先通过将我的程序停止进入Golly的配置来识别程序,然后注意到它可以进一步传送.

我还把我的游戏中的整个小板放到了Golly中,它与我的配置有很大的不同.Golly是一款广泛使用的生命模拟器游戏.

我尝试了几种不同的方法来解决我的问题:

  • 我在我的代码中分解了逻辑语句以使用no and/ orstatements.
  • neighbors()通过将其插入到自己的程序中并设置一些网格配置来测试我的功能.
  • 然后我看着打印出来的网格,然后我打neighbors()了一个位置.它工作得很好.

看着我的代码,我看不出它为什么不起作用.我没有得到错误,它有效,它只是错误.模式的进展与它们的应用方式大不相同.这也是我编写的第一个> 100行程序,如果没有松散地遵循教程,请原谅我,如果答案是显而易见的.

相关代码如下:

#Function to find number of live neighbors
def neighbors(row, column):
    adjacents = 0

    #Horizontally adjacent
    if row > 0:
        if board[row-1][column]:
            adjacents += 1
    if column > 0:
        if board[row][column-1]:
            adjacents += 1
    if row < thesize-1:
        if board[row+1][column]:
            adjacents += 1
    if column < thesize-1:
        if board[row][column+1]:
            adjacents += 1

    #Diagonally adjacent
    if row > 0 and …
Run Code Online (Sandbox Code Playgroud)

python conways-game-of-life

15
推荐指数
1
解决办法
454
查看次数

为什么我要使用itertools.islice而不是正常的列表切片?

在我看来,itertools模块中的许多功能都具有更容易的等价物.例如,据我所知,itertools.islice(range(10),2,5)做同样的事情range(10)[2:5],itertools.chain([1,2,3],[4,5,6])做同样的事情[1,2,3]+[4,5,6].主要文档页面提到了速度优势,但除此之外还有任何理由选择itertools吗?

python iterator list

15
推荐指数
2
解决办法
9152
查看次数

CSS过渡自动宽度

我有一个元素,当它的内容发生变化时,它的宽度我想要动画.它有width: auto,而且永远不会改变.我已经看过这个技巧,但那是为了在两个值之间转换而设置一个.我根本不操纵值,只是内容,我希望我的元素大小随动画而改变.这在CSS中完全可能吗?

这是我的代码的简化版本:

.myspan {
  background-color: #ddd;
}

.myspan:hover::after {
  content: "\00a0\f12a";
  font-family: Ionicons;
  font-size: 80%;
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet"/>
<html>
  <body>
    <span class="myspan">Hello!</span>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当用户将鼠标悬停在元素上时,我希望将大小改变为动画.

css animation css3 css-transitions css-animations

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

更改没有动画的CAShapeLayer

我想在没有默认动画的情况下设置a的strokeEnd属性CAShapeLayer,根本没有动画.我环顾四周试图找到如何做到这一点,但一切似乎都是关于如何动画属性.

cocoa core-animation objective-c calayer

12
推荐指数
1
解决办法
3424
查看次数

在系数之间添加乘号(*)

我有一个用户输入功能的程序,例如sin(x)+1.我正在ast尝试通过将组件列入白名单来确定字符串是否"安全",如本答案中所示.现在我想解析字符串,*在没有它们的系数之间添加乘法()符号.

例如:

  • 3x- > 3*x
  • 4(x+5) - > 4*(x+5)
  • sin(3x)(4)- > sin(3x)*(4)(sin已经在全局变量中,否则这将是s*i*n*(3x)*(4)

有没有有效的算法来实现这一目标?我更喜欢pythonic解决方案(即不是复杂的正则表达式,不是因为它们是pythonic,而是因为我不理解它们并想要一个我能理解的解决方案.简单的正则表达式是可以的.)

sympy在一个条件下,我非常愿意使用(这对于这类事情看起来很容易):安全.显然是在引擎盖下sympy使用eval.我目前的(部分)解决方案的安全性非常好.如果有人有办法sympy使用不受信任的输入更安全,我也欢迎这一点.

python string function sympy

10
推荐指数
1
解决办法
653
查看次数

将呼吸描记器代码改为功能

我正在写一个python spirograph程序,我需要一些帮助将它的一部分转换成一个函数.代码试图重现我在这里找到的视频中说明的结果.一条线围绕原点旋转,然后另一条线从其末端旋转,等等.

通过对(我认为是)三角学的一点研究,我把一个函数放在一起rotate(point, angle, center=(0, 0)).用户输入要旋转的点,旋转的角度(顺时针),以及旋转的中心点.

然后,我实施了初始测试,其中一条线围绕另一条线旋转.第二行的结尾绘制就像握笔一样.代码有点乱,但看起来像这样.

x, y = 0, 0
lines = []

while 1:

    point1 = rotate((0,50), x)
    point2 = map(sum,zip(rotate((0, 50), y), point1))
    if x == 0:
        oldpoint2 = point2
    else:
        canvas.create_line(oldpoint2[0], oldpoint2[1], point2[0], point2[1])
    lines.append( canvas.create_line(0, 0, point1[0], point1[1]) )
    lines.append( canvas.create_line(point1[0], point1[1], point2[0], point2[1]) )
    oldpoint2 = point2

    tk.update()

    x += 5
    if x > 360 and y > 360:
        x -= 360
        canvas.delete("all")
        time.sleep(1)
    y += 8.8
    if y …
Run Code Online (Sandbox Code Playgroud)

python tkinter function rotation python-2.7

6
推荐指数
1
解决办法
283
查看次数