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 1
@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 是判断语句。谢谢啦
|