这是我的一段代码......
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中的"最小惊讶":可变默认参数
在下面的代码中,输出应该不是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) 所以我有一个辅助函数,它应该打印出二叉树(未排序)的内部节点和叶子。因为我在上课,所以我不会提供代码,但我可以告诉你,我已经对它进行了编码,它适用于我在那里投入的第一个节点:
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对象,它看起来很好:
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)
使用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类,其构造函数如下所示:
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)
还是有一种打电话的首选方式?
我有以下代码:
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; 我不明白为什么.
所以我有一个名为 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) 我想编写一个通用函数,它接受两个输入变量var1,var2并返回两者的串联。
每个变量都有默认值None,可以是单个元素或一个list.
预期结果应该是一个列表(即使两个var1和var2的None,它应该返回一个空列表[])。
下面是我的功能:
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 …
我的代码:-
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)
我有一个模块,其中定义了一些常量,并在多个函数中使用。我如何从我的主文件中覆盖它们的值?
说这是模块,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 ×10
function ×3
list ×2
arguments ×1
dictionary ×1
inheritance ×1
init ×1
nonetype ×1
oop ×1
python-2.7 ×1
string ×1
variables ×1