重走py 之路 ——普通操作与函数(三)
前言
本节主要介绍函数,但是函数是由操作组成的。那么就分为两部,一部分为操作一部分为函数。
正文
py世界中的操作。
操作
if:
在学习任何一门语言中,关系if,要关系另外一件事,那就是if是否只能判断bool,还是可以判断其他的,比如说1或者0。
if 1:
print("good");
输出:good.
看了py 中if是对bool进行扩展了。
再来看:
if "":
print("good");
if "123":
print("123good");
输出:"123good"
看了其对空字符的是一个false状态
if None:
print("none");
没有任何输出,那么其对None 是false状态,在这里说明一下py中没有Null,只有None。
那么看下其对列表和集合的态度是怎么样的。
list=[]
a={};
if list:
print("not none");
else:
print("none")
if a:
print("not none");
else:
print("none")
返回两个none,说明其还会根据len来做判断,非常友好的一个东西。
那么在if中或和且是否是我们原来熟悉的&&还有||呢?
在这里说明一下,py的语义化太好了,直接使用and 和or 来说明。
比如说:
list=[]
if 'good' in list:
print("have good");
elif ('not good' in list or 'sleep' in list) and 'name' in list:
print("not good");
上面可以看出else if 用elif来替代。list是否包含某个字符,可以直接用in来操作。
输入:
在前面和上续中,有很多print,也就是输出,那么如何输入呢?
name = input("please say your name:");
print(name);
输入和输出:
please say your name:11
11
在这里说明一点,就是上面name的等于号,一定要有空格,这个py的规范,否则将会出现异常。
其他一些操作:
while 和其他语言一样,但是得记得while后面加:,例如:
while true:
pass
函数
在很多语言中,函数都是非常关键的东西,因为你不可能一行写到尾。
def printName(firstName,lastName):
print("firstName:"+firstName+"lastName:"+lastName);
printName("firstName","lastName");
输出:firstName:firstNamelastName:lastName
那么学了这么多语言,要思考的问题是py到底能不能设置参数默认值,或者能不能显示传参。
def printName(firstName,lastName):
print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName",lastName="lastName");
事实证明是可以显示传参的,同样也是可以有默认值的。
def printName(firstName,lastName="tom"):
print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName");
这样就可以。现在我们发现一个问题,那就是printName 在调用的时候没有信息,那么我们需要加上注释:
def printName(firstName,lastName="tom"):
"""
printName 输出名字
args:
firstName string
lastName string
return:
none
"""
print("firstName:"+firstName+"lastName:"+lastName);
printName(firstName="firstName");
那么看下什么效果:
是的,这样对于团队协作来说好太多了。
同样函数值得关注的还有是否可以传递任意数量的实参。
def printName(*name):
"""
printName say name
args:
firstName string
lastName string
return:
none
"""
print("firstName:"+name[0]+"lastName:"+name[1]);
printName("firstName","lastname");
这样似乎就可以了,*name,表示建立一个元组,传递任意的参数将会组成一个元组。
那么任意数量的实参是不是只能是数组呢?如果你在加一个*的话,那么你可以传递字典。
def printName(**name):
"""
printName say name
args:
firstName string
lastName string
return:
none
"""
print(name);
printName(firstName="firstName",lastname="lastname");
输出:{'lastname': 'lastname', 'firstName': 'firstName'}
结
next 类和模块