python 函数&条件,循环

条件
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
注意 else 后加冒号 :

input()返回的数据类型是str

循环
Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来
for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:

>>> list(range(5))
[0, 1, 2, 3, 4]
range(101)就可以生成0-100的整数序列

第二种循环是while循环

dict
Python内置了字典:dict
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>> d['Adam'] = 67
>>> d['Adam']
67
通过in判断key是否存在:

>>> 'Thomas' in d
False
删除一个key,用pop(key)方法,对应的value也会从dict中删除

set
在set中,没有重复的key
创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
remove(key)方法可以删除元素
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

函数
可以把函数名赋给一个变量
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。
在Python交互环境中定义函数时,注意Python会出现...的提示。函数定义结束后需要按两次回车重新回到>>>提示符下。
pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来

默认参数
把第二个参数n的默认值设定为2:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
当调用power(5)时,相当于调用power(5, 2):

>>> power(5)
25
必选参数在前,默认参数在后

不按顺序提供部分默认参数时,需要把参数名写上。比如调用enroll('Adam', 'M', city='Tianjin'),意思是,city参数用传进去的值

可变参数
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用的时候,需要先组装出一个list或tuple:

>>> calc([1, 2, 3])
14
简化:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc(1, 2, 3)
14
>>> nums = [1, 2, 3]
>>> calc(*nums)
14

关键字参数
def person(name, age, **kw):
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict

只接收city和job作为关键字参数。这种方式定义的函数如下:

def person(name, age, *, city, job):
命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数

使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
def person(name, age, *args, city, job):

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

posted @ 2018-02-18 16:30  夜游星  阅读(2042)  评论(0编辑  收藏  举报