之所以写学习笔记,一是可以督促自己坚持学习;二是自己记忆力不好,做了笔记,以后忘记了,方便复习巩固,所以,此笔记力求简洁,便于以后速查。三是当作对自己表达能力的一种锻炼。
虽然自己目前工作中用到脚本语言的机会不多,但是了解掌握一本脚本语言还是很有必要的。
本学习笔记,是基于Codecademy的Python教程的,可以算是对它的翻译和摘录。
Python是一门强大的,灵活的编程语言,可以用于网页开发,桌面图形用户接口,创建游戏等。Python是高级的,解释性的,面向对象的语言。
第一课 Python 语法
1.1 变量声明,非常简单,就像自然语言一样。如 a = 5,声明一个整形变量a,它的值是5。
1.2 数据类型:integer整型,floats浮点型,boolean布尔型(True/False,Python是大小写敏感的),strings字符串。
1.3 语句:Python中语句是用空白符分隔的。对于函数,需要用4个空格来缩进代码。
1.4 单行注释: #开头的行为注释,会被解释器忽略,不会影响代码的执行。
1.5 多行注释:当然可以每行都以#开头来达到此目的,更简便的方式是使用两队“三个双引号”。例如: """You can write this in multiple lines""".
1.6 算术运算符:六个算术运算符, + - * / **指数运算符 %模运算符
第二课 字符串 Strings
2.1 字符串是另一个有用的数据类型。字符串常量是指用单引号('')或者双引号("")括起来的内容。
2.2 转义字符: 反斜杠\(backslash) 如 \' , "I\'m a programmer\n".
2.3 利用下标访问每个字符 如下图,"PYTHON"包含六个字符,下标从0开始,"PYTHON"[1] 得到的是 'Y'
+---+---+---+---+---+---+
| P | Y | T | H | O | N |
+---+---+---+---+---+---+
0 1 2 3 4 5
2.4 可以对字符串操作的方法
len() 得到字符串长度 , 如len("PYTHON")
str() 将内容转换成string, 如str(3.14)
lower() upper() 将字符串中所有字符变成小写/大写字符,如 "Python".lower() "Python".upper()
上面四个方法的操作方式不太一样,因为lower()和upper()是string类型特有的方法,只能用于string类型,所以需要用.操作符;而len()和str()可以用于很多对象,不止string。
2.5 控制台输出
print "String to console" 可以将字符串显示到控制台。
要打印多个字符串可以用"+"号直接连接字符串,对于字符串与非字符串要想连接起来,就需要将非字符串类型显式转换为字符串,这里要用到前面提到的str()方法。
字符串一旦创建号,它的内容是不能改变的,如果想输出变化的内容怎么办呢?字符串格式化(string formatting)能够满足这个需求。
字符串格式化使用%符号,如 print "My name is %s, I live in %s" % (my_name, my_city)
需要用户输入内容时,用variable_name = raw_input('Prompt')
判断一个string是否只包含字母,用isalpha()
第三课 条件判断和流程控制
3.1 比较运算符 1. Equal to (==) 2. Not equal to (!=) 3. Less than (<) 4. Less than or equal to (<=) 5. Greater than (>) 6. Greater than or equal to (>=)
3.2 逻辑运算符 1. and 2. or 3.not 优先级 not > and > or
3.3 条件语句 需要注意的是和函数体的缩进一样,这里的条件语句体要四个空格缩进
if EXPRESSION:
do something
elif OTHER EXPRESSION:
do something
else:
do something
第四课 函数
函数是程序中一段用来执行某项特定任务的可以重复使用的代码
4.1 函数的好处
1.不同的函数处理不同的任务,可以更好地组织代码,如果代码中有错误,易于找到和修复bug。
2.减少代码的冗余,增加复用性。
3.对象(objects)可以有自己的函数/方法。
4.D.R.Y(Dont Repeat Yourself) 帮助我们更容易地避免重复自己。
5.递归是一个强大的工具,它允许多次执行同一段代码甚至是调用自己。有些编程问题必须用递归才能解决。函数使实现递归成为可能。
4.2 函数的构成
函数有三部分构成
1.函数头:包括 def关键字,函数名字,参数列表和冒号。
2.可选的文档字符串(docstring):有三重引号包括,可以有多行的用来描述函数功能的注释。
3.函数体:函数执行的代码块。像if/elif/else语句一样,函数体需要四个空格缩进。
下面是一个简单函数的例子:
def spam():
"""Print Eggs! to console"""
print "Eggs!"
4.3 变长参数(Splat)
当不知道用户将传给函数多少个参数的时候,要用到变长参数,语法就是在参数名字前加一个*号。
4.4 模块(Module)
一个模块是一个包含你可以使用的变量和函数定义的文件。当需要用到某个模块中的变量或者函数时,就需要import相应的模块 。
1.普通导入:如import module1,这样当使用module1中的函数func时需要使用点号分隔符,如module1.func。
2.函数导入:允许只导入某个模块中的某些特定的变量或者函数。语法如下:from module import function
3.万能导入:语法 from module import *
4.5 内置函数
1.max():参数可以是任意个数的,返回这些参数中的最大值。
2.min():返回一系列参数中的最小值。
3.abs():接收一个参数,返回它的绝对值。
4.type():返回参数的类型信息。
如:print type(42) ==> <type 'int'>
print type(4.2) ==> <type 'float'>
print type('spam') ==> <type 'unicode'>
print type({'Name':'John Cleese'}) ==> <type 'dict'>
print type((1,2)) ==> <type 'tuple'>
第五课 列表和字典
列表是一种存储不同信息的数据类型。给列表赋值形式为: list_name = [item_1, item_2] , 一个列表可以为空:empty_list = []
可以通过下标访问列表中的每一个元素,list_name[index],列表下标是从0开始的。
列表的长度不必是固定的,随时都可以向列表尾部添加元素,可以用list_name.append(item)实现向列表尾部添加元素。可以用len来获得列表中元素的个数:len(list_name)子列表:如果想获得列表中的一部分,可以用如下语句:list_name[a:b],会得到从下标a开始到下标 b-1 的子列表。 如果子列表包含列表的第一个或者最后一个元素,那么可以不用指定相应元素的下标, 如my_list[:2] 表示前两个元素组成的子列表, my_list[3:] 表示从第四个元素开始一直到列表末尾的子列表
列表相关的函数:
index()my_list.index("str") 返回"str"出现的第一个下标
insert()my_list.insert(3, "str") 在my_list列表第3个下标位置插入"str",将之前下标位置为3及之后的元素依次后移一位。
remove()my_list.remove(VALUE) 将移除my_list第一个出现的VALUE。
如果想对列表中的每一个元素做一些操作,可以利用for循环:
for variable in list_name:(注意此处的":"号)
#do something
字典和列表类似,不过访问字典中的值是通过查找键(key)而非下标(index)。键(key)可以是字符串或者数字。和列表一样,字典也是可变的,这意味着字典在创建之后还是可以被修改的。这样的优点之一是在列表创建之后,我们可以用如下形式向字典中添加键/值对: dict_name[new_key] = new_value
空字典定义: empty_dicgt ={}
从字典中移除一个项目: deldict_name[key_name]