乐高积木之函数
函数的定义
def 函数名():
函数体
return 返回值1,返回值2
函数的调用
函数名()
实现打印返回值: print 函数名()
总结:
定义函数时,函数不执行;
调用函数时, 函数才执行;
有参数的函数
必选参数
# 形式参数
def add(x, y):
print x + y
# 实参, x=1, y=2
add(1 2)
默认参数
def mypow(x,y=2):
print x**y
mypow(2)
可变参数
# 形式参数
# args可以改为其他变量名;
def add(*args):
# args实质上是一个元组;
# print args
sum = 0
for i in args:
sum += i
print sum
# 实参, x=1, y=2
add(1 2 3 4 5 6 2 3 4 5 76)
关键字参数
def inuser(name, age, **kwargs):
# kwargs实质上是一个字典;
print name, name, kwargs
inuser("user1" 12 city="xi'an" birth="20180101")
返回值
函数中如果没有return时, 默认返回None;
def add(x,y):
return x+y
# return None
print add(1, 2)
返回多个值
def fun(*args):
"""
返回最大值和最小值
:param args: 传入多个数值
:return: 最大值, 最小值
"""
# 实质上python只能返回一个值;
# 间接通过元组返回多个值;
return max(args), min(args)
print fun(91 2 3 12 34)
函数的作用域
global关键字必须要先声明, 再赋值;
# 全局变量
num = 1
def fun():
# global声明num为全局变量
global num
# 局部变量
num = 5
fun()
print num
若果没有声明为局部变量则不生效
高级特性
切片
迭代
是否可以for循环遍历的对象;
isinstance判断是否可迭代;
# In [4]: from collections import Iterable
# In [5]: isinstance("hello", Iterable)
# Out[5]: True
# In [6]: isinstance([1,2,3,4], Iterable) 判断列表是否可以迭代
# Out[6]: True
# In [7]: isinstance((1,2,3,4), Iterable) 判断元组是否可以迭代
# Out[7]: True
# In [8]: isinstance({'a':1}, Iterable) 判断字典是否可以迭代
# Out[8]: True
# In [9]: isinstance({1,2,3}, Iterable) 判断集合是否可以迭代
# Out[9]: True
列表生成式
生成列表的公式
需求: 生成一个列表, 返回1-100中偶数的平方;
[4, 16, 36...]
# 方法1:
li = [ ]
for i in range(2,20,2):
li.append(i**2)
print li
# 方法2:
[i**2 for i in range(2 20 2)]
变异的列表生成式
# for循环嵌套if语句
[i**2 for i in range(2,20) if i%2==0] 如果刚好整除二则平方
# for循环嵌套for循环, 两个字符串的全排列
[i+j for i in 'xyz' for j in '123']
练习:找出/etc下文件中以.conf结尾的文件;
提示:
- os.listdir("/etc") 查看跟下etc下的文件
- s.enswith(".conf") 查看.conf结尾的文件
import os
print [i for i in os listdir('/etc') if i endswith(".conf")][:5]查看前五个