重新拾起转行的想法|||看到了函数部分

来源:互联网 发布:安卓e4a编程工具手机版 编辑:程序博客网 时间:2024/04/29 01:50

跟着廖雪峰的教程继续学习python

同时一起看的还有 MIT的计算机导论

希望一年后能步入正轨


第一天有几个进步

1、学会使用了Python自带的IDE,CPython,知道怎样用自带的编辑器打代码和运行了。之前用的都是powershell+notepad++(《笨办法学python》教的),不断摸索新的方法去学习才能不固步自封~

2、教程中提到为何不能将默认参数放在必需参数面前,个人的想法是默认在前的话,就像二元一次方程ax2+bx+c,abc都是默认的,如果忘记输入了必须参数,拿这方程就没有意义了,函数也没有意义了。是这样么。。初步记下来,词不达意。

3、关于默认参数,必须是不变量,tuple或者string。这样才不会在运行过程中被更改而导致函数出错

4、关键字参数 教程里是这样使用的

kw = {'city':'Beijing', 'job': 'Engineer')person('Jack', 24, **kw)

其实这里的kw似乎是可以换掉的 比如dict = {'city':'Beijing', 'job': 'Engineer')
person('Jack', 24, **dict)

输出结果也一样。 就是说明关键字参数的条件是 ** 。姑且这样看吧。。hhh

(噢他最后写了 *args, **kw是习惯写法 最好这样用 嘻嘻嘻)


5、尾递归,在返回的时候调用函数本身,且不能包含表达式,这样就不会不断地增加栈,导致栈溢出。但是python和其他一些语言都没有针对尾递归做优化,所以都有栈溢出的风险。但是廖雪峰大大也说了尾递归和循环效果相同。所以我要学会在python中用循环来表现出尾递归。防止栈溢出。。hhh

6、列表生成式

L = range(1,10)[x * x for x in L if x % 2 ==0]

一句简短的话省下许多代码量,python的代码越短越好 越简单越好。 但是此处方括号中 最后只能有if 不能有else或elif。 但是前面的‘所求数’((x * x) 或称为process(x))是可以用if...else来写的。

7、生成器,这是在笨办法里没有见过的。“他是一个一边循环一边计算的机制” Generator。

原来方法之一就是把刚才列表生成式外面的方括号变成圆括号。之前我已经尝试过了 不知道弄出来个什么东西,我本意是想生成tuple 后来发现既然是list生成式 所以没有深究,悲伤、、咸鱼如我。

g = (x * x for x in range(10))<generator object <genexpr> at 0x0000000002EF6798>


生成器和列表等类型都是可以迭代的,最基本的用 generator.next() 来调用,但是一般来说用 for...in...比较方便。

第二种生成器的表达方式是把函数中的‘return’改为yield.





0 0