
def minmax(test, *args): res = args[0] for arg in args[1:]: if test(arg, res): res = arg return res
def lessthan(x, y): return x<y def grtrthan(x, y): return x>y
如上代码的执行顺序,当执行到 if test 时是怎样的? def minmax 和 def lessthan 执行顺序是怎样的呢? 谢谢-__-
1 holajamc 2017-02-17 00:10:53 +08:00 via iPhone 这,楼主的代码缩进有一些惊奇。。。 |
2 grimpil 2017-02-17 00:21:51 +08:00 语法错误,无法执行 |
3 cszeus 2017-02-17 02:16:26 +08:00 if test 执行 test 函数,返回值作为 if 的判断条件。 声明的话顺序的,哪个在前面,哪个先声明 |
4 fortunezhang 2017-02-17 08:34:21 +08:00 if test 是在 for arg 新 args[1:],执行后,第一条执行的。 def minmax(test,*args): res = args[0] for arg in args[1:]: if test(arg, res): res = arg return res 你不格式化,后面很难看懂啊。我用了 3 分钟才看出来。 |
5 fortunezhang 2017-02-17 08:37:08 +08:00 我的天,我的代码也没有格式化?求助怎么缩进啊 |
6 jingniao 2017-02-17 09:04:26 +08:00 试试 md 支持? ```python def minmax(test,*args): res = args[0] for arg in args[1:]: if test(arg, res): res = arg return res def lessthan(x, y): return x<y def grtrthan(x, y): return x>y ``` 另外你只是三个函数定义吧?哪来的执行,相互之间也没有调用关系 |
7 lynndotconfig 2017-02-17 10:16:31 +08:00 def minmax(test, *args): res = args[0] for arg in args[1:]: if test(arg, res): res = arg return res def lessthan(x, y): return x < y def grtrthan(x, y): return x > y find_less = minmax(lessthan, 5, 6, 7, 8, 9, 4) find_greater = minmax(grtrthan, 5, 6, 4, 3, 2, 1) print find_less, find_greater # ##### Output # 4 6 |
8 yangsunrise OP @lynndotconfig if test 下的 res = agr 和 return x<y(return x>y)是什么关系? |
9 yangsunrise OP @fortunezhang v2 不知为什么自动删除了代码的缩进换行格式。。。。就是用 python 实现 py 内置函数 min , max 的功能 |
10 lynndotconfig 2017-02-17 15:15:28 +08:00 @yangsunrise 如果 test=lessthan: test(arg, res) <==> lessthan(arg, res) <==> (return arg < res) <==> True or False 如果 test=grtrthan: tese(arg, res) <==> grtrthen(arg, res) <==> ( return arg > res) <==> True or False 是不明白在 python 中函数名可以作为参数这个问题吗? |
11 lynndotconfig 2017-02-17 15:21:54 +08:00 @yangsunrise 第一条附言中的的输出应该是 3 和 5 。 |
12 yangsunrise OP @lynndotconfig 那就是到 if 是调用 def lessthan ,先执行 return 再执行 res = arg , return 用于 if 条件判断?大概懂了,就是没想到 return x<y 是判断语句。谢谢啦 |