相关疑难解决方法(0)

默认参数中字符串的连接

这是我的一段代码......

def contactMaster(data="",url= str(chosenMaster)+"todolist"):
    print "url: "+url
Run Code Online (Sandbox Code Playgroud)

它只打印"todolist"而不是"http://www.mysite.com/blah/1234/todolist"

为什么不工作?

python string concatenation default-arguments

0
推荐指数
1
解决办法
2100
查看次数

python函数带参数的奇怪行为

可能重复:
Python中的"最小惊讶":可变默认参数

在下面的代码中,输出应该不是6 6 7 6,但实际输出与下面提到的非常不同

i=5
def fs(args=i):
 print args
 print i

i=6
fs()
fs(7)

Actual Output is 5 6 7 6
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
63
查看次数

python递归函数不初始化默认参数值

所以我有一个辅助函数,它应该打印出二叉树(未排序)的内部节点和叶子。因为我在上课,所以我不会提供代码,但我可以告诉你,我已经对它进行了编码,它适用于我在那里投入的第一个节点:

def helper(root, internals=[], leaves=[]):
    #function code here...
>>> helper(node)
    ([13, 14, 27], [10, 11, 12, 17, 19])
Run Code Online (Sandbox Code Playgroud)

据我所知,这是正确的输出。但是,当我在另一个节点上再次调用相同的函数时,输出被覆盖到前一个:

>>> helper(pen)
    ([13, 14, 27, 6, 8, 14], [10, 11, 12, 17, 19, 2, 4, 10, 12])
Run Code Online (Sandbox Code Playgroud)

这是不正确的,因为树pen没有元素 13、14、27 或 10、11、12、17、19。有人可以解释这里发生了什么吗?我必须针对不同情况测试我的函数,而无需每次都重新启动 shell。我该如何解决?

python

0
推荐指数
1
解决办法
2035
查看次数

在面向对象的python中访问变量和函数 - python

  1. 如何在python对象中声明默认值?

没有python对象,它看起来很好:

def obj(x={123:'a',456:'b'}):
    return x
fb = obj()
print fb
Run Code Online (Sandbox Code Playgroud)

使用python对象,我收到以下错误:

def foobar():
    def __init__(self,x={123:'a',456:'b'}):
        self.x = x
    def getStuff(self,field):
        return x[field]
fb = foobar()
print fb.x

Traceback (most recent call last):
  File "testclass.py", line 9, in <module>
    print fb.x
AttributeError: 'NoneType' object has no attribute 'x'
Run Code Online (Sandbox Code Playgroud)
  1. 如何让对象返回对象中变量的值?

使用python对象,我收到一个错误:

def foobar():
    def __init__(self,x={123:'a',456:'b'}):
        self.x = x
    def getStuff(self,field):
        return x[field]

fb2 = foobar({678:'c'})
print fb2.getStuff(678)

Traceback (most recent call last):
  File "testclass.py", line 8, in <module>
    fb2 = foobar({678:'c'}) …
Run Code Online (Sandbox Code Playgroud)

python oop variables init

0
推荐指数
1
解决办法
105
查看次数

使用默认参数调用Python构造函数

假设您有一个Python类,其构造函数如下所示:

 def __init__(self,fname=None,data=[],imobj=None,height=0,width=0):
Run Code Online (Sandbox Code Playgroud)

并且您想要创建它的实例但只提供fname和imobj输入.这样做的正确方法是否正确?

thing = Thing(f_name, None, im_obj, None, None)
Run Code Online (Sandbox Code Playgroud)

还是有一种打电话的首选方式?

python arguments function

0
推荐指数
1
解决办法
52
查看次数

len()函数在Python中无法正常工作

我有以下代码:

class Stat(list):
    def __init__(self, lst = []):
        self.s = list(lst)

    def __repr__(self):
        return "Stat({})".format(self.s)

    def add(self, item):
        self.s.append(item)

    def len(self):       
        return len(self.s)

...(more methods, but not necessary)
Run Code Online (Sandbox Code Playgroud)

所有方法都能正常工作但是len().无论Stat对象的长度如何,返回的长度始终为0; 我不明白为什么.

python function list

0
推荐指数
1
解决办法
3870
查看次数

Python:为什么添加键值对后继承的字典属性的内存位置不会改变

所以我有一个名为 User_1 的父类,User_1 的 init 方法如下所示:

class User_1(object):
    def __init__(self, user_id, bio="", likes=0, uploads={}, follows=0, dateJoined=None, accountType=""):
        self.user_id = user_id
        self.bio = bio
        self.likes = likes
        self.uploads = uploads
        self.follows = follows
        self.dateJoined = dateJoined
        self.accountType = accountType
        self.comments = []
        self.responseCommentsCount = 0
Run Code Online (Sandbox Code Playgroud)

然后,我有一个继承自 User_1 类的类,称为 TrendingUsers,它的 init 方法如下所示:

class TrendingUser(User_1):
    def __init__(self, user_id):
        User_1.__init__(self, user_id)

        self.averageTSWords = 0.0
        self.averageSSWords = 0.0
        self.percOfClipTitlesUntitled = 0.0
        self.percOfClipsWithCaptions = 0.0
        self.percOfClipsWithTags = 0.0
        self.percOfClipsWithComments = 0.0
        self.percOfPurgatoryClips = 0.0
        self.averageTimeDifferenceBetweenUploaded = …
Run Code Online (Sandbox Code Playgroud)

python inheritance dictionary memory-address python-2.7

0
推荐指数
1
解决办法
144
查看次数

如果没有在函数中传递默认参数,将 None 转换为空列表的大多数 Pythonic 方法是什么?

我想编写一个通用函数,它接受两个输入变量var1var2并返回两者的串联。

每个变量都有默认值None,可以是单个元素或一个list.

预期结果应该是一个列表(即使两个var1var2None,它应该返回一个空列表[])。

下面是我的功能:

def my_func(var1=None, var2=None):
    if not isinstance(var1, list):
        var1 = [var1]
    if not isinstance(var2, list):
        var2 = [var2]
    return var1 + var2 
Run Code Online (Sandbox Code Playgroud)

当我只输入一个变量时,我得到以下信息:

def my_func(var1=None, var2=None):
    if not isinstance(var1, list):
        var1 = [var1]
    if not isinstance(var2, list):
        var2 = [var2]
    return var1 + var2 
Run Code Online (Sandbox Code Playgroud)

我想得到

>>> lst = my_func(var2=[1, 2, 3])
>>> print(lst)
[None, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在函数中转换None …

python function list default-arguments nonetype

0
推荐指数
1
解决办法
112
查看次数

错误:- 解包的值太多(预期为 2)python 函数

我的代码:-

Videos10k=[{'title': '', 'titleWords': ['...','...'], 'titleLength': 10, 'likes': 86, 'disLikes': 5, 'views': 2202, 'creator': '...', 'description': '...'}]
def getavg(number, array=[]):
    views_avg = 0
    for idx, Video in array:
        views = Video["views"]
        views_avg = views_avg + views

    views_avg = views_avg / len(array)
    print("Average views for " + number + " " + views_avg)


getavg("10k", Videos10k)
Run Code Online (Sandbox Code Playgroud)

我收到此错误。错误:-

在 idx 的 getavg 中,数组中的视频:ValueError:要解压的值太多(预期为 2)

python

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

Python - 覆盖导入文件中的常量并在导入函数中使用

我有一个模块,其中定义了一些常量,并在多个函数中使用。我如何从我的主文件中覆盖它们的值?

说这是模块,test_import.py

MY_CONST = 1

def my_func(var = MY_CONST):
    print(var)
Run Code Online (Sandbox Code Playgroud)

这是我的main.py文件:

import test_import

MY_CONST = 2
test_import.MY_CONST = 3

test_import.my_func()
Run Code Online (Sandbox Code Playgroud)

这段代码仍然打印“1”。我希望它打印一些其他值(显然,在调用时不传递值my_func()

python python-import

0
推荐指数
1
解决办法
62
查看次数