在python中声明函数会使用def关键字,但是def是可执行代码。所以会有这样的现象
- #! /usr/bin/python
-
import sys
-
-
if __name__ == "__main__":
-
if len(sys.argv) > 1 :
-
def show(argv):
-
for i in range(len(argv)):
-
print "argc = %d , args[%d] = %s" %(i,i,argv[i])
-
-
return 0
-
else :
-
def show(argv):
-
print argv
-
-
return 0
-
-
show(sys.argv)
程序执行到if的那个分支就定义那个分支中的show函数。
再看看C语言中类似的实现:
- #include <stdio.h>
-
-
int main(int argc,char* args[])
-
{
-
int (*show_p)(int argc,char* args[]) = NULL;
-
-
if(argc > 1){
-
int show(int argc,char* args[])
-
{
-
int i = 0;
-
-
printf("argc = %d \n", argc);
-
for(i = 0 ; i < argc ; i++){
-
printf("argc = %d , args[%d] = %s \n",i,i,args[i]);
-
}
-
-
return 0;
-
}
-
show_p = show;
-
} else {
-
int show(int argc,char* args[])
-
{
-
printf("argc = 0 , args[0] = %s \n",args[0]);
-
return 0;
-
}
-
show_p = show;
-
}
-
-
show_p(argc,args);
-
-
return 0;
-
}
C语言中使用函数指针也可以实现这种效果。
以上python版本为Python 2.7 (r27:82500, Sep 16 2010, 18:03:06)
GCC版本为gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
阅读(2100) | 评论(0) | 转发(0) |