问一个较基础的问题,关于 Python 语句执行顺序?

2017-02-16 23:46:40 +08:00
 yangsunrise

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 执行顺序是怎样的呢? 谢谢-__-

3384 次点击
所在节点    Python
12 条回复
holajamc
2017-02-17 00:10:53 +08:00
这,楼主的代码缩进有一些惊奇。。。
grimpil
2017-02-17 00:21:51 +08:00
语法错误,无法执行
cszeus
2017-02-17 02:16:26 +08:00
if test 执行 test 函数,返回值作为 if 的判断条件。
声明的话顺序的,哪个在前面,哪个先声明
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 分钟才看出来。
fortunezhang
2017-02-17 08:37:08 +08:00
我的天,我的代码也没有格式化?求助怎么缩进啊
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
```
另外你只是三个函数定义吧?哪来的执行,相互之间也没有调用关系
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
yangsunrise
2017-02-17 12:59:25 +08:00
@lynndotconfig if test 下的 res = agr 和 return x<y(return x>y)是什么关系?
yangsunrise
2017-02-17 13:05:49 +08:00
@fortunezhang v2 不知为什么自动删除了代码的缩进换行格式。。。。就是用 python 实现 py 内置函数 min , max 的功能
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 中函数名可以作为参数这个问题吗?
lynndotconfig
2017-02-17 15:21:54 +08:00
@yangsunrise 第一条附言中的的输出应该是 3 和 5 。
yangsunrise
2017-02-17 18:49:13 +08:00
@lynndotconfig 那就是到 if 是调用 def lessthan ,先执行 return 再执行 res = arg , return 用于 if 条件判断?大概懂了,就是没想到 return x<y 是判断语句。谢谢啦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX