我认为在程序设计初步中,三个点最为重要,就是循环,条件,函数。本篇从这三个点来总结。
一、基础知识
if语句
在python中的条件由if-elif-else来控制,不同于C,C++的是,elif取代了else if。if循环嵌套是常见的操作。
while语句
简单的while(判断条件):执行语句。注意冒号,缩进,另外python中无do…while语句!
for语句
可以遍历任何序列的项目,如一个列表或者一个字符串。
#遍历元组
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
print (x)
for i in range(len(a)):
print(i, a[i])
如果说要遍历数字,需要用到range函数。
for x in range(0,10) :
print(x)
#输出0,1,2,3,4到9
foe x in range(0,10,2):
print(x)
# 第三个参数为步长,输出0,2,4,6,8
至于break,continue语句,和在C,C++中的用法作用一样,不多细说。
pass 语句
pass 不做任何事情,一般用做占位语句,如下实例
while True:
pass # 等待键盘中断 (Ctrl+C)
###
最小的类
class MyEmptyClass:
pass
二、函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
def hello() :
print("Hello World!")
hello()
参数传递
- 不可变类型:
类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
- 可变类型:
类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
参数也有几种类型,具体细分为四种
- 必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def printme( str ):
"打印任何传入的字符串"
print (str)
return
##此函数必须传入参数
- 关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def f(name, age):
print ("名字: ", name)
print ("年龄: ", age)
return
f(age=50,name="ceshi")
- 默认参数
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:
def f(name, age=30):
print ("名字: ", name)
print ("年龄: ", age)
return
f(name="ceshi")
#age默认为30
- 不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:
def f( arg1, *vartuple):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
f( 70, 60, 50,40,30 )
#输出70
#(60, 50, 40, 30)
如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。
当然,加了两个星号 ** 的参数会以字典的形式导入。
def f( arg1, **dict):
print (arg1)
print (dict)
f( 70, a=60, c=50)
#70 {'a': 60, 'c': 50}
声明函数时,参数中星号 * 可以单独出现,星号后的参数必须用关键字传入。
def f(a,b,*,c):
print(a+b+c)
return a+b+c
f(10,20,c=30)