1.控制语句
1.1 条件控制:if..else
def checkAge(age): if age > 30: return "您老了~" else: return "正年轻~"
if __name__ == "__main__": print("age = 20", checkAge(20)) print("age = 40", checkAge(40))
|
1.2 条件控制:if..elif..else
def checkScore(score): if score > 90: return "优秀" elif score >= 70: return "良" elif score >= 60: return "及格" else: return "差"
if __name__ == "__main__": print("score = 95", checkScore(95)) print("score = 80", checkScore(80)) print("score = 65", checkScore(65)) print("score = 43", checkScore(43))
|
@注意点: python中没有switch…case
1.3 循环控制: for | while
if __name__ == "__main__": language = ["Java", "Php", "Go", "Python"] for n in language: print("for:", n)
index = 0 while index < len(language): print("while:", language[index]) index = index + 1
|
2. 函数入门
2.1 定义
在Python
中,函数定义必须以def
关键词开始.
def func_name(arg1,arg2) """ 函数说明文档 """ return x
|
2.2 调用
def getSumList(list_num): """ 把列表中的所有元素相加 """ sumTotal = 0 for n in list_num: sumTotal = sumTotal + n return sumTotal
def sumList(list_num): """ 把列表中的所有元素相加 """ sumTotal = 0 for n in list_num: sumTotal = sumTotal + n return sumTotal
if __name__ == "__main__": list_var = [10, 20, 30, 40, 50, 60, 70, 80] print("func_demo.getSumList:", func_demo.getSumList(list_var)) print("main.sumList:", sumList(list_var)) print("sum:", sum(list_var)) print("getSumList函数说明:", func_demo.getSumList.__doc__)
|
3. 参数分类
3.1 可变&不可变类型
Python
语言的数据类型有不可变类型和可变类型两种,因此参数也分可变类型和不可变类型;
- 不可变类型:
数值类型、字节串类型、元组类型
;
- 可变类型:
列表类型、字典类型
对不可变类型参数的传递采用:值传递; 对于可变类型参数的传递采用: 地址传递
当使用可变参数类型传递时,要特别注意:函数内对变量的修改,也会影响到函数外的实参。
3.2 区别演示
def argDemo(str, list_var): """ 演示可变类型和不可变类型作为参数的区分 """ str = "hello" list_var[0] = "hello"
if __name__ == "__main__": name = "张三" names = ["张三", "李四"] print("调用函数前: name:{} names:{}".format(name, names)) argDemo(name, names) print("调用函数后: name:{} names:{}".format(name, names))
|
4. 参数传递
4.1 默认参数
def defaultArgDemo(name, age=18): """ 默认参数演示使用 :param name: :param age: :return: """ res = "姓名:{} 年龄:{}".format(name, age) return res
if __name__ == "__main__": print("当不传age时: ", defaultArgDemo("张三")) print("当传age时: ", defaultArgDemo("李四", 22))
|
4.2 关键字参数
一般我们调用函数时,但是按照函数的形参的顺序传递参数(也就是位置参数
),除此之外我们还可以通过关键字传参
,如下示例:
def funcDemo(name, age, home): """ :param name: :param age: :param home: :return: """ res = "姓名:{} 年龄:{} 地址:{}".format(name, age, home) return res
if __name__ == "__main__": print("关键字参数演示A: ", funcDemo(age=20, name="张三", home="北京")) print("关键字参数演示B: ", funcDemo(home="南京", name="李四", age=39))
|
@注:关键字参数传参,和顺序没有关系
4.3 变长参数
4.3.1 以一个*
开始
def funcDemo(*args): """ 以* 开始的变长参数 :param args: :return: """ res = "接收结果:{} 类型:{}".format(args, type(args)) return res
if __name__ == "__main__": print("变长参数A: ", funcDemo("张三", 10)) print("变长参数B: ", funcDemo("张三", 10, ["篮球", "游戏"]))
|
@注: 以一个*开始的变长参数,接受到数据会变成元组类型,并且在一个函数定义中,最多只能有一个这样的参数。
4.3.2 以两个*
开始
def funcDemo(**args): """ 以 ** 开始的变长参数 :param args: :return: """ res = "接收:{} 类型:{}".format(args, type(args)) return res
if __name__ == "__main__": print("运行结果A> ", funcDemo(name="张三", home="北京")) print("运行结果B> ", funcDemo(name="李四", likes=["动漫", "游戏"]))
|
@注: 以两个*开始的变长参数,接受到数据会变成字典类型,并且在一个函数定义中,最多只能有一个这样的参数。
5.匿名函数
Python
使用关键字lambda
来创建匿名函数,匿名函数主体是一个表达式,而不是一个代码块,所以能实现的业务逻辑非常有限。
if __name__ == "__main__": addFunc = lambda a, b: a + b print("3 + 3 = ", addFunc(3, 3)) print("5 + 5 = ", addFunc(5, 5))
numbers = [1, 2, 3] res = map(lambda x: x * 10, numbers) print("res = ", list(res))
|