python快速学习2

python流程控制

if语句

>>> if age < 12:
...     print "儿童"
... elif age < 30:
...     print "青年"
... elif age < 50:
...     print "壮年"
... else:
...     print "老年"
...

for in 语句

>>> name = ['song', 'shou', 'li']
>>> for x in name:
...     print x, len(x)
...
song 4
shou 4
li 2

循环控制语句
break continue 以及for与else的搭配
用法与C语言类似

pass

pass语句什么也不做

range()函数

range(左边界,右边界,步长)

>>> range(5)
[0, 1, 2, 3, 4]
>>> range(0,5,1)
[0, 1, 2, 3, 4]
>>> range(-10, 20,100)
[-10]//后面连个参数不要搞混了
>>> range(-10, 100, 20)
[-10, 10, 30, 50, 70, 90]
>>>

常用于索引列表

>>> for i in range(len(name)):
...     print i ,name[i]
...
0 song
1 shou
2 li
>>>

函数的定义

//例子
>>> def fib(n):
...     a,b = 0,1
...     while b<n:
...             print b
...             a,b = b,a+b
...
>>> fib(100)
1
1
2
3
5
8
13
21
34
55
89

函数调用会为局部变量生成一个新的符号表
全局变量不能再函数中直接赋值(除非是global语句命令的变量)

函数也是对象
在没有return语句下默认的返回值是NONE

>>> f = fib
>>> f(100)
1
1
2
3
5
8
13
21
34
55
89
>>> print fib(100)
1
1
2
3
5
8
13
21
34
55
89
None//函数的返回值是NONE

新的例子,返回斐波那契列表

>>> def fib(n):
...     ret = []
...     a,b = 0,1
...     while b<n:
...             ret.append(b)//也可以换成ret += [b],不过用append效率更高
...             a,b = b,a+b
...     return ret
...
>>> fib(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>>

python函数的深入使用

1.默认参数值可以是多个,也可以是变量(会在作为默认参数的时候被解析为常量看待)

>>> def name_List(name1, name2='WuPing',name3='LengXianjin'):
...     return [name1,name2,name3]
...
>>> name_List('Song')
['Song', 'WuPing', 'LengXianjin']
>>> name_List('HuLuping','SongShouli','XinMingquan')
['HuLuping', 'SongShouli', 'XinMingquan']
>>>
>>> Name = 'songshouli'
>>> def name_print(name = Name)://这里面的name = Name 相当于name = 'songshouli'
...     return name
...
>>> Name = 'WuPing'
>>> name_print
<function name_print at 0x0295C7B0>
>>> name_print()   //虽然Name变量的值变了,但是函数的返回值依旧没变
'songshouli'
>>>

默认值只会被赋值一次
所以默认值如果是可变对象的时候,情况就会改变

>>> def name_print(name, List=[]):
...     List.append(name)
...     return List
...
>>> name_print('song')
['song']
>>> name_print('Wu')
['song', 'Wu']
>>> name_print('Leng')
['song', 'Wu', 'Leng']
>>>

2.关键字参数
使用与字典类型的值

>>> def List_name_age(**kk):
...     for i in kk:
...             print i,":",kk[i]
...
>>> List_name_age(song=23,Wu=23,Leng=31)
Wu : 23
Leng : 31
song : 23
>>>

命名关键字参数
命名关键字参数有点像默认参数,其实是限制参数个数的关键字参数
区别就是命名关键字参数可以不按照顺序来,但是必须按照参数的顺序排列
必选参数---默认参数---可变参数---命名关键字参数---关键字参数

由于命名关键字参数和默认参数形式一样,所以,只有在调用的时候才能确定

>>> def Name(name, song=23,wu=24,leng=31):
...     print name,song,wu,leng
...
>>> Name(34,wu=12,leng=32,song=12)
34 12 12 32
>>> Name(34)
34 23 24 31
>>> Name(name=12,song=24,leng=14)//此时wu是关键字参数
12 24 24 14
>>> Name(34,12,leng=44,wu=11)//此时wu相当于默认参数
34 12 11 44
>>> Name()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Name() takes at least 1 argument (0 given)
>>>

3.多个参数(可变参数/元组参数)
使用*的方式

>>> def List_name(*name):
...     print name
...
>>> List_name('song','wu','leng')
('song', 'wu', 'leng')

实在不理解为什么参数搞这么多种类型,很乱啊

4.匿名函数
lanbda a,b : a+b返回一个函数对象

>>> f = lambda x:x+3
>>> f(2)
5
>>> def time(diff_time):
...     return lambda time:time-diff_time
...
>>> f=time(20)
>>> f(40)
20
>>>

5.文档字符串
用于对象的介绍,默认放在__doc__下

>>> def time_get(diff_time):
...     '''This is a function to modify the minute
...     because the real world environment,the time is later
...     so,I sub the time with 20
...     '''
...
>>> print time_get.__doc__
This is a function to modify the minute
        because the real world environment,the time is later
    so,I sub the time with 20

>>>

编码风格(明天看看)

  • 使用 4 空格缩进,而非 TAB。

在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。TAB 引发了一些混乱,最好弃用。

  • 折行以确保其不会超过 79 个字符。

这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件。

  • 使用空行分隔函数和类,以及函数中的大块代码。
  • 可能的话,注释独占一行
  • 使用文档字符串
  • 把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格: a = f(1, 2) + g(3, 4) 。
  • 统一函数和类命名。

推荐类名用 驼峰命名, 函数和方法名用 小写_和_下划线。总是用 self 作为方法的第一个参数(关于类和方法的知识详见 初识类 )。

  • 不要使用花哨的编码,如果你的代码的目的是要在国际化 环境。 Python 的默认情况下,UTF-8,甚至普通的 ASCII 总是工作的最好。
  • 同样,也不要使用非 ASCII 字符的标识符,除非是不同语种的会阅读或者维护代码。
原文地址:https://www.cnblogs.com/sslblog/p/6930400.html