小编Ale*_*ine的帖子

什么是正确的JSON内容类型?

我一直在忙着JSON一段时间,只是把它作为文本推出它并没有伤害任何人(我知道),但我想开始正确地做事.

我见过这样的JSON内容类型很多所谓的"标准":

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
Run Code Online (Sandbox Code Playgroud)

但哪个是正确的,还是最好的?我认为它们之间存在安全性和浏览器支持问题.

我知道有一个类似的问题,如果REST API返回JSON,那么MIME类型是什么?,但我想要一个稍微有针对性的答案.

json content-type http-headers

9962
推荐指数
38
解决办法
265万
查看次数

"yield"关键字有什么作用?

yieldPython中关键字的用途是什么?它有什么作用?

例如,我试图理解这段代码1:

def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild  
Run Code Online (Sandbox Code Playgroud)

这是来电者:

result, candidates = [], [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)

_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?


1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.

python iterator yield generator coroutine

9664
推荐指数
46
解决办法
212万
查看次数

sys.argv [1]在脚本中的含义

我现在正在教自己Python,只是想简单地说(参考下面的例子)sys.argv [1]代表什么.它只是要求输入吗?

#!/usr/bin/python3.1

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main() function
def main():
  print ('Hello there', sys.argv[1])
  # Command line args are in sys.argv[1], sys.argv[2] ..
  # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

python

135
推荐指数
6
解决办法
37万
查看次数

Python构造函数和默认值

不知何故,在下面的Node类中,wordList和adjacencyList变量在Node的所有实例之间共享.

>>> class Node:
...     def __init__(self, wordList = [], adjacencyList = []):
...         self.wordList = wordList
...         self.adjacencyList = adjacencyList
... 
>>> a = Node()
>>> b = Node()
>>> a.wordList.append("hahaha")
>>> b.wordList
['hahaha']
>>> b.adjacencyList.append("hoho")
>>> a.adjacencyList
['hoho']
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以继续使用默认值(在这种情况下为空列表)的构造函数参数,但要让a和b都有自己的wordList和adjacencyList变量?

我正在使用python 3.1.2.

python constructor default-value

107
推荐指数
4
解决办法
21万
查看次数

来自set的选择?蟒蛇

我正在研究一个猜谜游戏的AI部分.我希望AI从这个列表中选择一个随机字母.我正在做它作为一个集合,所以我可以轻松删除列表中的字母,因为它们在游戏中猜到,因此不再可以再次猜到.

它说"set"对象不可索引.我该如何解决这个问题?

import random 
aiTurn=True

while aiTurn == True:
    allLetters = set(list('abcdefghijklmnopqrstuvwxyz'))
    aiGuess=random.choice(allLetters)



    print (aiGuess) 
Run Code Online (Sandbox Code Playgroud)

python list set

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

使用self.xxxx作为默认参数 - Python

嘿大家好,我正在努力简化我的一个作业问题并使代码更好一些.我正在使用的是二叉搜索树.现在我在我的Tree()类中有一个函数,它找到所有元素并将它们放入列表中.

tree = Tree()
#insert a bunch of items into tree
Run Code Online (Sandbox Code Playgroud)

然后我使用我的makeList()函数从树中获取所有节点并将它们放在一个列表中.makeList()我打电话给这个功能tree.makeList(tree.root).对我来说,这似乎有点重复.我已经调用了树对象,tree.所以这tree.root只是浪费一点点打字.

现在makeList函数是:

    def makeList(self, aNode):
        if aNode is None:
            return []
        return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)
Run Code Online (Sandbox Code Playgroud)

我想让aNode输入一个默认参数,例如aNode = self.root(这不起作用),这样我可以运行这个函数,tree.makeList().

第一个问题是,为什么不起作用?
第二个问题是,有没有办法可以运作?正如你所看到的那样,makeList()函数是递归的,所以我无法在函数的开头定义任何东西,或者我得到一个无限循环.

编辑 以下是所有要求的代码:

class Node(object):
    def __init__(self, data):
        self.data = data
        self.lChild = None
        self.rChild = None

class Tree(object):
    def __init__(self):
        self.root = None

    def __str__(self):
        current = self.root

    def isEmpty(self):
        if …
Run Code Online (Sandbox Code Playgroud)

python tree recursion object

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

如何在不举起原创的情况下运行另一个python程序?

python中的什么命令可以用来运行另一个python程序?它不应该等待子进程终止,而是继续.它也不需要记住它的子进程.

python child-process

35
推荐指数
2
解决办法
1693
查看次数

从python中的父类文件调用子类方法

parent.py:

class A(object):
    def methodA(self):
        print("in methodA")
Run Code Online (Sandbox Code Playgroud)

child.py

from parent import A
class B(A):
    def methodb(self):
        print("am in methodb")
Run Code Online (Sandbox Code Playgroud)

反正是有打电话methodb()parent.py

python inheritance class parent

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

Tkinter:如何在画布窗口中获取框架以扩展到画布的大小?

所以我一直在使用tkinter中的canvas小部件来创建一个带有滚动条的标签框架.一切都很好,除了框架只扩展到放置在其中的标签的大小 - 我希望框架扩展到父画布的大小.

如果我在画布中使用pack(expand = True)(我已经在下面的代码中注释掉了),但是滚动条不起作用,这很容易就可以完成.

这是适当的代码:

        self.canvas = Canvas(frame, bg = 'pink')
        self.canvas.pack(side = RIGHT, fill = BOTH, expand = True)

        self.mailbox_frame = Frame(self.canvas, bg = 'purple')

        self.canvas.create_window((0,0),window=self.mailbox_frame, anchor = NW)

        #self.mailbox_frame.pack(side = LEFT, fill = BOTH, expand = True)

        mail_scroll = Scrollbar(self.canvas, orient = "vertical", 
            command = self.canvas.yview)
        mail_scroll.pack(side = RIGHT, fill = Y)

        self.canvas.config(yscrollcommand = mail_scroll.set)

        self.mailbox_frame.bind("<Configure>", self.OnFrameConfigure)


    def OnFrameConfigure(self, event):
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Run Code Online (Sandbox Code Playgroud)

我还提供了带彩色框架的图像,这样你就可以看到我所得到的东西.粉红色区域是需要通过mailbox_frame填充的画布(您可以看到右侧的滚动条):

谢谢

python tkinter python-3.x tkinter-canvas

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

龟图形没有响应

我在Python中使用turtle包创建图表,除了一个问题外,它在某种程度上是成功的.一旦乌龟生成我在代码中的图表,它会导致程序说"没有响应",最终我必须结束任务.我使用的是Windows 7.

有没有人经历过这个或知道根本原因?我尝试完全重新安装Python,但这似乎并没有影响问题.

以下是一些示例代码,使其无法"响应":

import turtle
from turtle import forward, right, left

forward(50)
Run Code Online (Sandbox Code Playgroud)

python turtle-graphics windows-7

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