Python:我如何使用仅将其中一个字符串作为参数的函数来比较两个字符串?
Python: How would I compare two strings using a function with only one of the strings as an argument?
我创建了一个 class,但我不确定如何解决以下问题。是否可以创建一个函数来执行示例中的操作? (对于实际用途,如果日期和月份相同但年份不一定相同,我会比较日期并返回 true)
示例:
>>>strvar1 = 'abc-123'
>>>strvar2 = 'abc-456'
>>>strvar1.myfunction(strvar2)
True
Class代码
class Date(object):
def __init__(self, x0 = 1900, y0 = 1, z0 = 1):
self.x = x0
self.y = y0
self.z = z0
def __str__(self):
date = str(self.x) + "-" + str(self.y).rjust(2, '0') + "-" + str(self.z).rjust(2, '0')
return date
def myFunction(j):
所以这个例子看起来像:
d1 = Date(1999, 1, 1) //d1 = "1999-01-01"
d2 = Date(2000, 2, 2) //d2 = "2000-02-02"
d3 = Date(2001, 2, 2) //d3 = "2001-02-02"
>>>d1.myFunction(d2)
False
>>>d2.myFuction(d3)
True
如果您尝试在方法调用之前执行比较,您可以使用三元运算符来评估条件,然后 return 您想要的变量。下面列出了一个例子,写在 JavaScript
var a = 1
var b = 2
myObj.myMethod( (a>b) ? a : b );
在上面的例子中,三元语法
(a>b) ? a : b
将评估 a 大于 b 然后 return a 如果为真否则如果 a 小于 b 它将 return b.
在不懂语言的情况下,您可能需要查看 wiki 页面以了解您的语言的特定语法实现。
是的,这就是拥有 类 的原因。继续阅读 https://docs.python.org/2/tutorial/classes.html。
def myFunction(self, cdate):
return self.y == cdate.y and self.z == cdate.z
基于 class 的方法没有任何问题,但是函数式编程也有一个解决方案,在部分函数中:
def make_has_same_month_day(d1):
"""return a function that takes a date
and returns true if the month and day are the same as the enclosed date"""
def has_same_month_day(d2):
return d1.y == d2.y and d1.z == d2.z
return has_same_month_day
这也可以写成functools.partial
。
from functools import partial
def same_month_day(d1, d2):
"""return true if both dates have the same month and day"""
return d1.y == d2.y and d1.z == d2.z
has_same_month_day = partial(same_month_day, d1)
我创建了一个 class,但我不确定如何解决以下问题。是否可以创建一个函数来执行示例中的操作? (对于实际用途,如果日期和月份相同但年份不一定相同,我会比较日期并返回 true)
示例:
>>>strvar1 = 'abc-123'
>>>strvar2 = 'abc-456'
>>>strvar1.myfunction(strvar2)
True
Class代码
class Date(object):
def __init__(self, x0 = 1900, y0 = 1, z0 = 1):
self.x = x0
self.y = y0
self.z = z0
def __str__(self):
date = str(self.x) + "-" + str(self.y).rjust(2, '0') + "-" + str(self.z).rjust(2, '0')
return date
def myFunction(j):
所以这个例子看起来像:
d1 = Date(1999, 1, 1) //d1 = "1999-01-01"
d2 = Date(2000, 2, 2) //d2 = "2000-02-02"
d3 = Date(2001, 2, 2) //d3 = "2001-02-02"
>>>d1.myFunction(d2)
False
>>>d2.myFuction(d3)
True
如果您尝试在方法调用之前执行比较,您可以使用三元运算符来评估条件,然后 return 您想要的变量。下面列出了一个例子,写在 JavaScript
var a = 1
var b = 2
myObj.myMethod( (a>b) ? a : b );
在上面的例子中,三元语法
(a>b) ? a : b
将评估 a 大于 b 然后 return a 如果为真否则如果 a 小于 b 它将 return b.
在不懂语言的情况下,您可能需要查看 wiki 页面以了解您的语言的特定语法实现。
是的,这就是拥有 类 的原因。继续阅读 https://docs.python.org/2/tutorial/classes.html。
def myFunction(self, cdate):
return self.y == cdate.y and self.z == cdate.z
基于 class 的方法没有任何问题,但是函数式编程也有一个解决方案,在部分函数中:
def make_has_same_month_day(d1):
"""return a function that takes a date
and returns true if the month and day are the same as the enclosed date"""
def has_same_month_day(d2):
return d1.y == d2.y and d1.z == d2.z
return has_same_month_day
这也可以写成functools.partial
。
from functools import partial
def same_month_day(d1, d2):
"""return true if both dates have the same month and day"""
return d1.y == d2.y and d1.z == d2.z
has_same_month_day = partial(same_month_day, d1)