http://blog.sysuschool.com/u/mygod/index.html
请稍候,载入中。。。
 
请稍候,载入中。。。
2019/3/23 14:21:00
博文:聊聊python与JavaScript(五)

  继续小结python基本语法。

 

  周六下午值班,小结最后一个内容:函数

 

  py中函数定义用defjsfunction声明函数。py定义函数格式,def 函数名:换行缩进函数代码块;函数调用方法都是 函数名+(),括号内传参数(如果有的话)。所学资料里暂时没看到py有匿名函数的说法。

 

  还有一点,js的函数声明在程序运行前会被提前处理,即提前到当前作用域顶部集中创建(包括用var声明的变量),也就是函数和变量位置在哪不重要,而py不可以,要调用的函数和变量必须位于代码的顶部,否则找不到函数或变量,就报错!

 

  关于报错,前面小结的列表、字典、元组、字符串的方法里的查询方法,很多都是查询没有时就报错,感觉这种设计有问题,js一般找不到时返回-1,而不会报错,报错意味着程序运行到这里,就卡住了?

 

  说到函数,变量就分了全局变量和局部变量,函数内部定义的变量为局部变量,函数参数也是局部变量。程序运行时,有局部变量就用局部变量,没有局部变量就用全局变量;函数执行完释放局部变量,这些pyjs都是一样的。不同的地方有,假如局部变量与全局变量同名,默认情况下,是当局部变量用,要作为全局变量用,需要在函数内用golbal关键字,如全局变量num,某函数内num=100,后一个num不加golbal关键字,py会认为函数内定义了一个局部变量num,如果golbal numnum=100py就会把num认作全局num,这种情况下会修改全局变量num

 

  说到函数,还有函数参数和返回值问题,在py中函数定义时的参数叫形参,函数调用时传入的参数叫实参,函数传参和返回值有个引用关系,这个有点晕,还不太理解为什么强调这个问题?函数的返回值用return,要返回多个返回值时用元组,不过括号可以省略,如“return tempwetness”,同js一样函数运行只负责输出返回值,你需要定义变量去接受返回值,用一个变量去接受多个返回值的话,数据类型其实是一个元组,也可以用多个变量去接受函数的多个返回值,如a,b=函数(),注意变量数量要与返回值的个数一致!

 

  关于函数参数,py可以在函数定义时,指定默认参数,如def stu_infoname,gender=”):,函数执行时不传gender参数时,默认值是“男”,js好像没有这种做法,但可以实现相应的功能,如function stu_info(name,gender){},在函数内用ifgender)判断有没有传gender参数,即js声明函数时有两个参数,但执行时可以传一个,在内部去判断有没有传另一个参数!

 

  还是关于函数参数,js中函数有个arguments对象(在函数内部可以直接用,如arguments.lengtharguments[i]),即js中函数参数有个东西直接管着,这个在函数具有不定数量参数有用,定义函数时可以没有参数,但调用时可以传参(不限数量)。py也可以,但更严格,定义函数时要用元组或字典变量做参数,而且元组变量前加一个*,字典加两个*,如定义函数时def demo(*.args):,这里args可以遍历(元组遍历),调用函数时demo(1,2,3,4),也可以定义一个元组变量如a=(1,2,3,4),再demo(*a),这个传参方式叫元组的拆包。字典类似,只是加**

 

  最后是函数的嵌套,即函数内调用函数,与js一样。还有递归,函数自己调用自己,这里一定要有终止条件,否则死循环。

 

  本次小结python基本语法到此,下阶段学习python的面向对象。

 

 

mygod | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
请稍候,载入中。。。
公告
请稍候,载入中。。。
时间记忆
请稍候,载入中。。。
最新日志
请稍候,载入中。。。
最新评论
请稍候,载入中。。。
最新回复
请稍候,载入中。。。
我的好友
我的相册
站点信息
请稍候,载入中。。。
生活因感动而精彩,理想在创造中放飞
Powered by Oblog.