通过使用lambda,枚举,闭包函数来实现特色枚举而不是Switch ...
对不起,我想在看了有关::>的教程后我对它有所了解。
编程术语:闭包-如何使用它们以及为什么有用https://www.youtube.com/watch?v=swU3c34d2NQ
我有一些问题,想要在这里更好地理解代码的问题。
在pycharm中:
switcher = { # info : dictionary ... 11: eleven, 12: twelve # info : enum def twelve() -> str }
如果我将鼠标悬停在'
switcher
'上->信息:dictionary
如果我将鼠标悬停在切换台的“元素”上-
例如十二12: twelve
->信息:enum def twelve() -> str
12: twelve --> info : enum def twelve() -> str
就像调用函数一样-由functionname()
(在字典中)
喜欢这样?
switcher = {
...
11: eleven(),
12: twelve()
}
in'switcher.get(argument, lambda: (" ...
',
IF
true:返回值:参数[如果存在,则为参数,否则ELSE
:[NONE]默认值“ lambda
”的目标或含义是什么?
如果我将其替换为字符串,则会引发错误。
func = switcher.get(argument, 'Invalid month [1-12]')
# TypeError: 'str' object is not callable
我的经验,那只是为了创建一个函数。没有它是行不通的。
((如果我理解正确的话)
当我替换为功能“ 十二
def twelve():
return ("December")
进入
return ("December : {input}".format(input=argument))
显示参数:'argument
'产生一个NameError: name 'argument' is not defined
#!/usr/bin/env python3
def one():
return "January"
def two():
return "February"
def three():
return "March"
def four():
return "April"
def five():
return "May"
def six():
return "June"
def seven():
return "July"
def eight():
return "August"
def nine():
return "September"
def ten():
return "October"
def eleven():
return "November"
def twelve():
# def twelve(argument):
print(' --- in function : twelve')
# print(' --- in function : twelve : {input}'.format(input=argument)) # results in a NameError: name 'argument' is not defined
return ("December")
# return ("December : {input}".format(input=argument)) # results in a NameError: name 'argument' is not defined
def numbers_to_months(argument):
# switcher - dictionary with all months
switcher = {
1: one,
2: two,
3: three,
4: four,
5: five,
6: six,
7: seven,
8: eight,
9: nine,
10: ten,
11: eleven,
12: twelve # enum def twelve() -> str
# 12: twelve(argument)
}
# get the function from switcher dictionary
func = switcher.get(argument, lambda: ("Invalid month [1-12] : your input : {input}".format(input=argument)))
# more information
print(" - switcher.get : {info} - {arg}".format(info=switcher.get(argument), arg=argument))
print(" - func : {info} - {arg}".format(info=func, arg=argument))
# execute the function
print(func())
print()
numbers_to_months(13)
numbers_to_months(3)
numbers_to_months(12)
numbers_to_months(31)
原始代码/教程:https://jaxenter.com/implement-switch-case-statement-python-138315.html
功能强大的枚举代替Switch ...通过使用lambda,enum,闭包函数抱歉,我看完有关以下内容的教程后,对它有所了解:编程术语:闭包-如何使用...
def func(arg):
print(arg)
return arg