参数的传递
从实参到形参的赋值,引用传递。
1.可变对象,直接作用于原对象本身
2.不可变对象,生出新的对象空间
可变对象有:字典、列表、集合、自定义对象等
不可变对象:数字、字符串、元组、function等
参数的传递
从实参到形参的赋值,引用传递。
1.可变对象,直接作用于原对象本身
2.不可变对象,生出新的对象空间
可变对象有:字典、列表、集合、自定义对象等
不可变对象:数字、字符串、元组、function等
函数也是对象,内存底层分析。
文档字符串
help(函数名._doc_)打印函数的文档字符串
函数用法和底层分析
函数的基本概念
1. 一个程序由一个个任务组成。函数就是代表一个任务或一个功能
2. 函数是代码复用的通用机制
python函数的分类
1. 内置函数
2. 标准库函数
3. 第三方库函数
4. 用户自定义函数
函数的定义和调用
核心要点
def 函数名([参数列表]):
#文档说明
函数体/若干语句
绘制不同颜色的多个同心圆
import turtle
t = turtle.Pen()
my_colors=('red','green','pink','black')
t.speed(10)
for i in range(10):
t.penup()
t.goto(0,-i*10)
t.pendown()
t.color(my_colors[i%len(my_colors)])
t.circle(15+i*10)
turtle.done()
推导式创建序列
列表推导式
[表达式 for item in 可迭代对象 if 条件判断]
[x*2 for x in range(1,20) if x%5==0]
cells = [(row,col) for row in range(1,10) for col in range(1,10)] #可以使用两个循环
字典推导式
{key : value for 表达式 in 可迭代对象}
my_text ='i love you, i love he, i love 123'
char_count ={c:my_text.count(c) for c in my_text}
集合推导式
{key for 表达式 in 可迭代对象}
b={x for x in range(1,100) if x%9 ==0}
生成器推导式(生成元组)
一个生成器只能运行一次
使用zip()并行迭代
zip()对多个序列进行并行迭代
循环代码优化
1. 尽量减少循环内部不必要的计算
2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
3. 局部变量查询较快,尽量使用局部变量。
其他优化手段:
1. 连接多个字符串,使用join()而不使用+
2. 列表进行元素插入和删除,尽量在列表尾部操作
else语句
如果没被break中断,则会执行else
while 条件表达式:
循环体
else:
语句块
break语句
break跳出最近一层的循环
continue语句
continue语句用于结束本次循环,继续下一次。应用于最近的一层循环
打印九九乘法表
for m in range(1,10):
for n in range(1,m+1):
print('{0}*{1}={2}'.format(m,n,(m*n)),end='\t')
print()
嵌套循环
一个循环体里可以嵌入另外一个循环,一般称为‘嵌套循环’。
for x in range(5):
for y in range(5):
print(x,end='\t')
print() #起到换行的作用
for循环和可迭代对象
for 变量 in 可迭代对象:
循环体语句
可迭代对象
1. 序列。包括:字符串、列表、元组
2. 字典
3. 迭代器对象(iterator)。range对象
sum_all = 0
for x in range(101):
sum_all += x
print(sum_all)
4. 生成器对象
循环结构
如果符合条件,反复执行循环体的语句。
while循环
while 条件表达式:
循环体语句
选择结构嵌套
使用时注意控制好不同级别的缩进量,缩进量决定了代码的从属关系。
多分支选择结构
if 表达式1:
语句1
elif 表达式2:
语句2
……
else:
语句n
双分支
if 条件表达式:
语句1
else:
语句2
三元条件运算符
简单双分支赋值情况
条件为真时的值 if (条件表达式) else 条件为假时的值
print('s<10' if 5<10 else 's>=10')
选择结构
选择结构:单分支、双分支、多分支。
单分支
if 条件表达式:
语句
num=input('请输入一个数字:')
if int(num)>10:
print(num)
条件表达式详解
False、空序列、空值、0、空迭代对象
其他均为True
条件表达式不能出现=,==表示等于判断
控制语句
数据可以看做是‘砖块’。控制语句是代码的组织方式,可以看做是‘混凝土’。