目录:
一、条件表达式
二、选择结构
1.单分支选择结构
2.双分支选择结构
3.多分支选择结构
4.选择结构的嵌套
三、循环结构
1.for循环
2.while循环
3.break和continue语句
4.循环结构的代码优化技巧
四、函数设计及调用
1.原则
2.语法
3.参数
4.变量作用域
Python相关博客推荐
(二)Python语法基础之字符串及其格式化方法(%-format、format、f-string)
(一)Python语法基础之列表、元组、字典、集合
一、条件表达式
在程序控制结构中(选择结构或循环结构)都要根据条件表达式来决定下一步操作如何进行,所有的Python合法的表达式都可以用作条件表达式。其中False、0(以及0.0、0j等)、None以及所有的空迭代对象(空列表、空元组、空字典等)Python解释器解释为False,其余所有的合法条件表达式均解释为True。
注:条件表达式中可以调用函数,但不能使用赋值运算符。
>>>print(1<2<3) #可以连用关系运算符
True
>>>if a=3: #不允许使用赋值运算符
syntaxErsyntaxror:invalid
关系运算符and和or具有惰性求值的特点,会避免不必要的运算。并且and和or在Python中的效果有别于数学上的规定。如:
>>>3 and 5
5
>>>3 or 5
3
>>>0 and 5
0
>>>0 or 5
5
二、选择结构
1.单分支选择结构
语法:if 条件表达式:
语句块
a=1,b=2
if a>b:
a,b=b,a
print(a,b)
2.双分支选择结构
语法:if 条件表达式:
语句块1
else :
语句块2
注:Python提供了一种三元运算符:
value1 if 条件表达式 else value2
(解释为当条件表达式为True时取value1,为False时取value2)-----正确选取这种结构可以极大简洁代码
3.多分支选择结构
语法:if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
...
else :
语句块n
4.选择结构的嵌套
语法:if 条件表达式1:
if 条件表达式2:
语句块1
else:
语句块2
else :
if 条件表达式3:
语句块3
else :
语句块n
#内部还可以进行多重嵌套,取决于实际的编程需求
三、循环结构
1.for循环
for 变量 in 序列或迭代对象:
循环体
[else:
else字句代码块] #[]部分可以省略
**eg**
s=0
for i in range(1,101): #range前闭后开
s+=i
else:
print(s)
2.while循环
while 条件表达式:
循环体
[else:
else子句代码块] #[]内的部分可以省略
3.break和continue语句
break和continue语句在for循环和while循环中都可以使用,常与选择结构结合使用。break解释为终结本层次的循环,不论循环是否执行完成;continue解释为结束本次循环进入下一次的循环,即循环体内continue之后的语句跳过不再执行直接进入下一次循环。
#break
i=0
while i<4:
print(i)
if i%2==1:
break
i=i+1
print("last:",i)
结果为:
0
1
last:1 #结束本层次的循环
#continue
n=1
while n<6:
n=n+1
if n==5:
continue
print(n)
结果为:
2
3
4
6 #跳过了5,结束本次循环进入下一次循环
注:过多的break和continue语句会降低程序的可读性,除非可以简洁代码和程序否则不建议轻易使用!
4.循环结构的代码优化技巧
第一:在编写循环语句时,尽量减少循环内部不必要或无关的计算,将不必要的代码尽量写在循环外,这样可以调高代码的执行效率
第二:局部变量的查询和访问速度比全局变量稍快,循环结构中可以的话尽量使用局部变量
四、函数设计及调用
一、原则:
1.同一个函数中不要执行太多功能(函数之间可以相互调用)
2.减少全局变量的使用(多使用局部变量)
3.函数定义时的参数列表可以为空,但圆括号和冒号必须保留
4.Python中可以不需要声明形参的类型,也不需要指定返回值的类型
5.函数属于可调用对象,在调用函数时应注意是否有返回值以及是否会对实参的值进行修改(即是原地操作还是返回新的值)
二、语法:
def 函数名([参数列表]):
‘’‘注释’’’
函数体(功能代码)
三、参数
默认参数:即在定义函数时为形参设置了默认值,支持显式修改形参的值
多次调用函数且不为默认值参数传递值时,默认值参数只在第一次调用时进行解释。
def demo(newitem,oldlist=[]):
oldlist.append(newitem)
return oldlist
print(demo('5',[]))
print(demo('aa',['a','b']))
print(demo('a'))
print(demo('1'))
#函数列表为默认参数,多次调用而不给参数传值时,再次调用时会默认上一次调用的结果传递给默认参数从而时结果错误且难以发现
def demo(newitem,oldlist=None):
if oldlist is None:
oldlist=[]
oldlist.append(newitem)
return oldlist
#这样编码就不会出现上述问题,自习体会其中区别和默认参数在函数定义中的效果
关键参数:主要指调用函数时的参数传递方式,与函数定义无关。
可变长度参数:*parameter用来接收任意多个实参并将其放在一个元组中
,**parameter接受类似于关键参数一样显式赋值形式的多个实参并将其放进字典
中。
>>>def demo(*p):
print(p)
>>>demo(1,2,3)
(1,2,3) #接受三个参数并放入元组中
>>>def demo(**p):
for item in p.items():
print(item)
>>>demo(x=1,y=2,z=3)
('y',2)
('x',1)
('z',3)
参数传递时的序列解包:在调用有多个参数的函数时,可以使用Python列表、元组、集合、字典等进行传参,并且在实参前加一个*
,Python解释器会自动进行解包并传递给多个单变量形参
四、变量作用域
不同作用域内的变量之间不会相互影响,函数内部定义的多为局部变量,函数外部定义的多位全局变量。函数内部定义的局部变量在函数运行结束之后会自动删除不可访问,但函数内部定义的全局变量会一直存在且可以访问。
全局变量用关键字global进行声明,需要注意的是在函数外部声明的全局变量不会因为定义的函数执行后而改变,但如果是普通变量在函数内部用global关键字声明,那么在函数执行之后变量会变为全局变量。
特别感谢清华大学董付国老师及其编著的《Python可以这样学》!灵感源于此!