精华内容
下载资源
问答
  • 我不能从函数中得到返回值True | False。我做错什么了?在剧本大致是这样的。在class getLogs:IAM=getpass.getuser()SRC_LOG_DIR='/server/log/session/'DST_LOG_DIR="/home/${IAM}/LOGS/"def __init__(self):parser...

    我不能从函数中得到返回值True | False。

    我做错什么了?在

    剧本大致是这样的。在class getLogs:

    IAM=getpass.getuser()

    SRC_LOG_DIR='/server/log/session/'

    DST_LOG_DIR="/home/${IAM}/LOGS/"

    def __init__(self):

    parser = argparse.ArgumentParser()

    parser.add_argument("-S","--sessId", type=int, help="The SessionId of the logs to retreive for.")

    args = parser.parse_args()

    if not args.sessId:

    args.sessId = 'ns'

    os.system('clear')

    print ('\tNo sessid was set.')

    print ('\tTip: you can see what options you have by running "{} -h"'.format(__file__))

    self.getSessID(args.sessId)

    if self.getSessID:

    print('\tI will get the logfiles for session ID "{}".'.format(self.sessId))

    #Do something else

    def getSessID(self, sessId):

    if sessId == 'ns':

    menu='on'

    while menu=='on':

    sys.stdout.write("\tPlease give me the sessionid of the logging :")

    sessId = raw_input()

    test = re.match("^[0-9]{5,7}$",sessId)

    if test:

    menu='off'

    if not test:

    print('\tError:\n\tSessionID should contain only numbers')

    print('\tor sessID was not defined.')

    print('\tor sessID length must be 5 to 7 characters')

    self.sessId = sessId

    return True

    我从这个print self.getSessID和构造器函数中的if self.getSessID得到的是>

    我肯定我做错了什么,我不知道如何从函数的返回值中获取值。

    有人能帮帮我吗?在

    展开全文
  • 建议不是永远不要使用True、False或None。只是你不应该使用if x == True。if x == True是愚蠢的,因为==只是一个二进制...因此,当您编写if x == True时,Python将首先计算x == True,如果x是True,否则将变成True...

    建议不是永远不要使用True、False或None。只是你不应该使用if x == True。

    if x == True是愚蠢的,因为==只是一个二进制运算符!它的返回值为True或False,这取决于它的参数是否相等。如果condition为真,则if condition将继续。因此,当您编写if x == True时,Python将首先计算x == True,如果x是True,否则将变成True,如果结果是真的,则继续。但是如果您希望x是True或False,为什么不直接使用if x!

    同样,x == False通常可以被not x替换。

    在某些情况下,您可能需要使用x == True。这是因为if语句条件是“在布尔上下文中求值”的,以查看它是否是“truthy”,而不是完全针对True进行测试。例如,非空字符串、列表和字典都被if语句视为truthy,也被视为非零数值,但它们都不等于True。所以,如果你想测试一个任意的值是否是True的值,而不仅仅是它是否真实,当你使用if x == True时。但我几乎看不到它的用处。如果你真的需要写这篇文章,那么添加一条评论是非常罕见的,这样未来的开发人员(可能包括你自己)就不会认为== True是多余的,然后删除它。

    相反,使用x is True实际上更糟。决不能将is与基本的内置不可变类型(如布尔值(True,False)、数字和字符串一起使用。原因是,对于这些类型,我们关心的是值,而不是标识。==测试这些类型的值是否相同,而is始终测试标识。

    测试标识而不是值是不好的,因为一个实现在理论上可以构造新的布尔值,而不是去寻找现有的布尔值,这会导致有两个具有相同值的True值,但它们存储在内存中的不同位置,并且具有不同的标识。在实践中,我非常确定Python解释器总是重用True和False,因此不会发生这种情况,但这确实是一个实现细节。这个问题总是让人们对字符串感到困惑,因为直接出现在程序源代码中的短字符串和文本字符串被Python回收,所以'foo' is 'foo'总是返回True。但是很容易用两种不同的方法构造同一个字符串,并让Python赋予它们不同的标识。注意以下事项:>>> stars1 = ''.join('*' for _ in xrange(100))

    >>> stars2 = '*' * 100

    >>> stars1 is stars2

    False

    >>> stars1 == stars2

    True

    编辑:因此,Python在布尔上的相等性有点出乎意料(至少对我来说):>>> True is 1

    False

    >>> True == 1

    True

    >>> True == 2

    False

    >>> False is 0

    False

    >>> False == 0

    True

    >>> False == 0.0

    True

    正如the notes when bools were introduced in Python 2.3.5中所解释的,其基本原理是,使用整数1和0来表示真值和假值的旧行为是好的,但我们只希望对表示真值的数字使用更具描述性的名称。

    实现这一点的一种方法是在内置代码中简单地包含True = 1和False = 0;然后1和True将无法区分(包括is)。但这也意味着返回True的函数将在交互式解释器中显示1,因此我们所做的是将bool创建为int的子类型。关于bool唯一不同的是str和repr;bool实例仍然具有与int实例相同的数据,并且仍然以相同的方式比较相等,因此True == 1。

    因此,当x可能被某些代码设置为“True只是拼写1的另一种方式”时,使用x is True是错误的,因为有很多方法可以构造等于True但不具有相同标识的值:>>> a = 1L

    >>> b = 1L

    >>> c = 1

    >>> d = 1.0

    >>> a == True, b == True, c == True, d == True

    (True, True, True, True)

    >>> a is b, a is c, a is d, c is d

    (False, False, False, False)

    你错了se x == True当x可以是任意Python值时,您只想知道它是否是布尔值True。我们唯一确定的是,当您只想测试“真实性”时,最好使用x。谢天谢地,这通常是所有需要的,至少在我写的代码中!

    更可靠的方法是x == True and type(x) is bool。但对于一个不太清楚的案子来说,这就太冗长了。通过执行显式类型检查,它看起来也不太像Python。。。但是,当您试图精确地测试True而不是truthy时,您所做的就是这样;duck类型的方法是接受truthy值,并允许任何用户定义的类声明自己是truthy的。

    如果您正在处理这个非常精确的真理概念,其中您不仅不认为非空集合是真的,而且也不认为1是真的,那么只使用x is True可能是可以的,因为您大概知道x不是来自于认为1为真的代码。我不认为有任何纯python的方法可以产生另一个True,它位于不同的内存地址(尽管您可能可以从C中完成它),因此这不应该中断,尽管理论上是“错误的”事情。

    我以前认为布尔人很简单!

    结束编辑

    然而,对于None,习惯用法是使用if x is None。在许多情况下,您可以使用if not x,因为None是if语句的“false”值。但是,如果您希望以相同的方式处理所有错误的值(零值数值类型、空集合和None),最好这样做。如果处理的值可能是其他值,也可能是指示“无值”的None(例如,当函数失败时返回None),那么最好使用if x is None,这样就不会在函数恰好返回空列表或数字0时意外假设函数失败。

    我关于对不可变值类型使用==而不是is的参数建议您应该使用if x == None,而不是if x is None。然而,在None的情况下,Python确实显式地保证整个宇宙中只有一个None,并且普通的Python惯用代码使用is。

    关于是返回None还是引发异常,这取决于上下文。

    对于您的get_attr示例,我希望它引发异常,因为我将像do_something_with(get_attr(file))那样调用它。调用者通常的期望是,他们会得到属性值,让他们得到None,并假设是属性值,这比在找不到属性时忘记处理异常要危险得多。另外,返回None表示失败意味着None不是属性的有效值。在某些情况下,这可能是一个问题。

    对于像see_if_matching_file_exists这样的虚函数,我们提供一个模式给它,它检查几个地方看是否有匹配,如果找到一个,它可以返回一个匹配,如果没有,它可以返回None。但是它也可以返回一个匹配列表;那么没有匹配只是空列表(这也是“false”;在这种情况下,我只需要使用if x来查看是否有任何东西回来。

    因此,当在异常和None之间进行选择以指示失败时,必须确定None是否是预期的非失败值,然后查看调用函数的代码的预期值。如果“正常”的期望是返回一个有效值,并且只有偶尔调用方能够正常工作,无论是否返回有效值,那么您应该使用异常来指示失败。如果没有有效值是很常见的,那么调用者将期望处理这两个possi概率,然后可以使用None。

    展开全文
  • 这是一个坏主意,因为作为一种最佳实践,您希望函数可靠地返回相同类型的值,但为了科学的利益……我正在使用Python 2,因此range返回一个列表,xrange是一个可迭代的(有趣的是它也提供了__len__).def xr(start, stop=...

    我正在尝试创建一个返回对象或作为生成器的函数.

    这是一个坏主意,因为作为一种最佳实践,您希望函数可靠地返回相同类型的值,但为了科学的利益……

    我正在使用Python 2,因此range返回一个列表,xrange是一个可迭代的(有趣的是它也提供了__len__).

    def xr(start, stop=None, step=1, gen=True):

    if stop is None:

    start, stop = 0, start

    if gen == True:

    for i in xrange(start, stop, step):

    yield i

    else:

    return range(start, stop, step)

    我收到此错误:

    File "", line 8

    SyntaxError: 'return' with argument inside generator

    问题:

    为什么(除了显而易见的“你不能同时在函数中产生和返回”,假设是正确的)它是否这样做?看看我的代码,不清楚为什么这样做会很糟糕.

    我怎么试图绕过这个?我知道我可以返回xrange而不是从xrange中产生每个项目,所以我可以返回在另一个函数中创建的生成器,但是有更好的方法吗?

    解决方法:

    >>> def xr(start, stop=None, step=1, gen=True):

    ... if stop is None:

    ... start, stop = 0, start

    ... if gen == True:

    ... return (i for i in xrange(start, stop, step)) #

    ... else:

    ... return range(start, stop, step)

    ...

    >>> xr(2, gen=False)

    [0, 1]

    >>> xr(2, gen=True)

    at 0x0000000002C1C828>

    >>> list(xr(2, gen=True))

    [0, 1]

    顺便说一下,我宁愿只定义一个生成器函数.然后使用list(xr(..))如果我需要一个列表.

    更新另外,您可以使用iter(xrange(开始,停止,步))而不是@DSM评论的生成器表达式.见Built-in functions — iter.

    标签:python,generator

    来源: https://codeday.me/bug/20190714/1459908.html

    展开全文
  • self.bodySearched = True print "You find a keycard that says 'storage' on it." self.lab_room() elif self.choice == "go back": self.main_hallway() newGame = Game() 现在newGame是一个类型为Game的对象,...

    你应该去上课看看。如果你做游戏的面向对象编程是一个更好的方法。

    当你习惯了上课,做游戏就更容易了。

    下面是一个你的游戏的例子,作为一个类对象prompt = "> "

    decision = "What do you do?"

    not_assigned = "Say wa?"

    class Game:

    def __init__(self):

    self.bodySearched = False

    self.engine_room()

    def engine_room(self):

    print "You are in a dark room with the sound of moaning engines."

    print "You see a corridor to your left and one to your right and an elevator straight ahead of you."

    print decision

    self.choice = raw_input(prompt)

    if self.choice == "go left":

    self.viewing_room()

    elif self.choice == "go right":

    self.right_corridor_dead_end()

    elif self.choice == "use elevator":

    print "you get in the elevator and go up."

    self.main_hallway()

    else:

    print not_assigned

    self.engine_room()

    def right_corridor_dead_end(self):

    print "You walk down the corridor only to be blocked by a collapsed ceiling."

    print decision

    self.choice = raw_input(prompt)

    if choice == "go back":

    self.engine_room()

    else:

    print not_assigned

    def viewing_room(self):

    print "You walk down the corridor and enter and a large room with a window covering the size of the wall."

    print "Straight ahead is another door"

    print decision

    self.choice = raw_input(prompt)

    if not self.bodySearched:

    if self.choice == "open door":

    print "The door is locked"

    self.viewing_room()

    elif self.choice == "go back":

    self.engine_room()

    else:

    print not_assigned

    if self.bodySearched:

    if self.choice == "open door":

    print "The door opens you walk through"

    self.storage_room()

    else:

    print not_assigned

    self.viewing_room()

    def main_hallway(self):

    print "You enter a large brightly lit room with 3 rooms connected to it and another elevator straight ahead."

    print "The rooms are named, the two on the left are the armoury and lab rooms and to the right are the cabins."

    print decision

    self.choice = raw_input(prompt)

    if choice == "go to lab room":

    self.lab_room()

    elif choice == "go back":

    self.engine_room()

    def lab_room(self):

    print "You enter the lab room which is cluttered with unexplainable machines."

    print "To the back of the room you see the dead body of a man with no obvious cause"

    print "He might have something useful on him"

    print decision

    self.choice = raw_input(prompt)

    if self.choice == "search body":

    self.bodySearched = True

    print "You find a keycard that says 'storage' on it."

    self.lab_room()

    elif self.choice == "go back":

    self.main_hallway()

    newGame = Game()

    现在newGame是一个类型为Game的对象,它将记住它的状态。

    definit(self)是一个当您创建该类的新对象时将调用的方法。你可以创建任意多个游戏对象,名字newGame或者任何你称之为新对象的东西都会取代self。所以player1.searchedBody可能为true,而player2.searchedBody可能为false。这很方便。

    展开全文
  • 编写一个python函数,检查接受两个字符串并返回True(如果一个字符串是另一个字符串的anagram)。否则返回False。在如果这两个字符串包含重复字符,但没有一个字符在同一位置重复,则认为这两个字符串是一个换位符。...
  • 我们们都学会判断真假,根据条件的不同,最终输出的结果可能为真,可能为假。在python函数中,也...内置函数all接收一个可迭代对象,如果其中所有的元素都是True,或者该可迭代对象中没有元素,返回True等价于def...
  • 函数也可以返回布尔值(True或False),这种情况便于隐藏函数内部的复杂测试。例如:#!/bin/pythondef is_divisible(x, y):if x % y == 0:return Trueelse:return Falseprint is_divisible(6, 3)$ python a.pyTrue一般...
  • 我正在浏览 /r/python 并遇到了 这篇文章:有这样一个函数:def check(x):if x+1 is 1+x:return Falseif x+2 is not 2+x:return Falsereturn True提供一个输入,使得 1 加上它,还是和它是同个对象的实例,但是 2 ...
  • 我们们都学会判断真假,根据条件的不同,最终输出的结果可能为真,可能为假。在python函数中,也...内置函数all接收一个可迭代对象,如果其中所有的元素都是True,或者该可迭代对象中没有元素,返回True等价于def...
  • 我们们都学会判断真假,根据条件的不同,最终输出的结果可能为真,可能为假。在python函数中,也...内置函数all接收一个可迭代对象,如果其中所有的元素都是True,或者该可迭代对象中没有元素,返回True等价于def...
  • 如果该数字中的数字按递增顺序排序,则该函数返回True,否则返回False。允许重复的数字。该函数也应该能够处理负数。根据定义对单个数字进行排序。因此func(0),func(112234)或func(-345669)返回True,但func(4321)...
  • def count():d=0while True:d+=1yield dc=count()def f2():return next(c)return f2#使用nonlocal关键字def createCounter():i=0def count():nonlocal ii+=1return ireturn count通常我们定义的函数都是...
  • def count():d=0while True:d+=1yield dc=count()def f2():return next(c)return f2#使用nonlocal关键字def createCounter():i=0def count():nonlocal ii+=1return ireturn count通常我们定义的函数都是...
  • 我们们都学会判断真假,根据条件的不同,最终输出的结果可能为真,可能为假。在python函数中,也...内置函数all接收一个可迭代对象,如果其中所有的元素都是True,或者该可迭代对象中没有元素,返回True等价于def...
  • Python函数基础1. 定义函数的三种方式空函数def func1():# TODO .....pass无参函数def fun1():print("test")有参函数def compare(a, b):if a > b:return True2. 函数的返回值函数可用return 返回值return 可终止函数...
  • python函数每日一讲 - any(),python函数any,说明:如果iteraany(iterable)版本:该函数适用于2.5以上版本,兼容python3版本。说明:如果iterable的任何元素不为0、''、False,all(iterable)返回True。如果iterable为...
  • 我正在尝试编写一个Python函数,它可以在计算幻方时返回True”或“False”。幻方是一个矩阵,它的行和、列和以及两条对角线的和都是相同的。(矩阵的一条对角线从左上角到右下角,另一条对角线从右上角到左下角。)...
  • 我要做的是将传感器数据从Raspbery Pi发布到AWS,AWS将数据存储到DynamoDB并调用lambda函数。然后,这个lambda函数向raspberry Pi订阅的主题发布消息。在所以我的问题是没有调用回调,所以我无法访问从AWS lambda...
  • Python函数

    2020-11-02 19:18:22
    4.返回值:函数返回的值 5.定义形参为空字符串可以让其变为可选状态(存储名字两个字三个字,多的字放在后) 6.python将非空字符串理解为True 7.传递列表:函数能直接访问内容 8.在函数中修改列表:用于处理执行任务太...
  • python 函数

    2019-09-21 10:48:56
    python 内置函数有很多,这里挑一部分介绍一下 abs() 获取绝对值,参数为数字 all() 参数为一个可迭代对象,判断这个可迭代对象的所有元素都是True。 除了0,None,空,False 其他都是True any()参数为一个可迭代...
  • python函数

    2020-05-20 16:25:58
    1、append函数 append函数会在数组后加上相应的元素 a=[1,2,3] a.append([5]) ...如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的
  • 匿名函数语法 lambda 参数:返回结果顾名思义,匿名函数一般没有函数名,一般用于和高阶函数配合一次性使用特点:写法简单,常用于做一些简单的处理举例:res=sorted([obj1,obj2,obj3],key=lambda x:x.age,reverse=True)...
  • 我有一个包装pyplot.plt的函数,所以我可以使用经常使用的默认值快速创建图形:def plot_signal(time, signal, title='', xlab='', ylab='',line_width=1, alpha=1, color='k',subplots=False, show_grid=True, fig_...
  • 若是是闰年,返回True。目前找到的最简洁的写法,喜欢这种去实现。1 #判断闰年 2 def is_leap_year(year): 3 return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0引申一下,判断是这一年的第几天。1 #...
  • 可调用对象callable()#可调用的(对象加括号可以执行特定的功能,如:类和函数)可调用对象即将自身传入 callable 函数(callable(对象))返回结果为True的对象x = 1print(callable(x))#False#x() # 会报错,TypeError: ...
  • Python list内置sort()方法用来...sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效sort(key=None,reverse=False) 就地改变列表 reverse:True反序;False 正序实例:>>&g...
  • 1.abs()abs() 函数返回数字的绝对值。2.all()all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False。(iterab...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,717
精华内容 1,486
关键字:

python函数返回true

python 订阅