Python核心编程笔记第二章----快速入门

2.1.程序输出,print语句及"Hello World!"

核心笔记:在交换式解释器中显示变量的值

在一般情况下,需要输入print来查看各变量的值,但在交互式解释器中,可以直接输入变量名查看该值的原始值。

>>> String = 'love you'
>>>
>>> print String
love you
>>> String
'love you'

下划线  _  在解释器中表示最后一个表达式的值。

>>> _
'love you'

print的语句与字符串格式操作符%结合使用,实现字符串替换功能。

>>> print 'I %s so much' % String
I love you so much

%s表示用一个字符串来替换,%d表示用一个整型来替换,%f表示浮点型替换。

2.2.程序输入和raw_input()内建函数

从用户那得到数据的最简单方法就是raw_input()内建函数。可以用int()内建函数将用户输入的字符串转换为整型。

>>> nums = raw_input('Input some numbers: ')
Input some numbers: 1103
>>> print 'The luck number is %d.' % int(nums)
The luck number is 1103.
>>> names = raw_input('Input some names: ')
Input some names: cytus
>>> print 'my name is %s.' % names
my name is cytus.
不使用int转换字符串格式则会报一个异常
>>> print '%d' % nums
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

类型错误:%d只能替换整型类型,而不是字符串。

核心笔记:从交互式解释器中获得帮助

如果需要得到一个不熟悉的函数能干什么事情,只需要对其调用内建函数help()

>>> help(list)
Help on class list in module __builtin__:

class list(object)
 |  list() -> new empty list
 |  list(iterable) -> new list initialized from iterable's items

核心风格:一直在函数外做用户交互工作

函数应该保持清晰性,只接受参数,返回结果。输出结果由函数外部来实现,函数只处理从用户得到的信息,返回或者不返回值,在函数中应少用print和raw_input语句,这样就能够在其他地方使用函数而不用担心自定义输出的问题。

2.3.注释

#号表示注释,从#开始到一行结束的内容都是注释。注释一般放在语句上方,做解释作用。还有一种叫文档字符串的特别注释,在类和函数和模块的起始添加一个字符串,起到在线文档的功能。

>>> # love you
... print 'i love you'
i love you
>>>
>>> def you():
...     "i so like you"
...     return True
...
>>> print you()
True

2.4.操作符

+ - * / // % **

加减乘除和取余都是标准操作符。Python有两种除法操作符,单斜杠为传统除法,双斜杠用作浮点除(对结果四舍五入)。传统除法是指两个操作符都为整型,将执行地板除(取比商小的最大整数),而浮点除是真正的除法。

乘方操作符,双星号(**)

>>> print -3 + 5 * 2 - 2 ** 3
-1

操作符优先级:+和-号优先级最低,* / // %优先级较高,单目操作符+和-优先级更高,乘方优先级最高。

比较操作符:< <= > >= == != <>

>>> 4 > 3
True
>>> 5 < 1
False
>>> 7 != 3
True
>>> 7 <> 3
True

!=和<>都是不等于,推荐使用前者

逻辑操作符:and      or       not

>>> 2 < 4 and 2 <3
True
>>>
>>> 2> 6 or 2 <5
True
>>> 3 < 4 <6
True

核心风格:合理使用括号增强代码的可读性

多使用括号总没错,使程序更具有逻辑性,可读性,可维护性,更难出现异常。

2.5.变量和赋值

变量名只能用大小写字母或者_开头,其他字符可以用数字字母_。Python的大小写敏感,list和List是两个不同变量。

Python是动态型语言,不需要预先声明变量的类型。变量的类型和赋值在赋值的那一刻被初始化,变量赋值通过等号来执行。

>>> my_name = 'cytus'
>>> you_name = 'loli'
>>> do_s = 'love'
>>> how_b = 'so much'
>>> print '%s %s %s %s' % (my_name, do_s, you_name, how_b)
cytus love loli so much

Python也支持增量赋值

>>> s = 0
>>> s = s + 5
>>> print s
5
>>> s += 5
>>> print s
10

2.6.数字

有五种基本数字类型:有符号类型,长整型,布尔值,浮点值,负数

int   123  434  657  -22  0x89  011 

long  7321837128L  3874823478L 0xADA2768DDAL

bool  True   False

float  3.14  3772.22  -90.   6.443e23

complex  6.23+1.5j  0+1j

布尔值是特殊的整型,假如布尔值和一个数字相加,True会被当成整数1,False会被当成整数0.

2.7.字符串

字符串为引号之间的字符集合。支持使用成对的双引号单引号三引号(三个连续的单引号或者双引号)用来包含特殊字符。使用索引操作符[]和切片操作符[:]可以得到子字符串。第一个字符的索引是0,最后一个字符的索引是-1.加号用于字符串连接,星号用于字符串重复。

>>> str1 = 'iill'
>>> str2 = 'lloo'
>>> sr1[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sr1' is not defined
>>> str1[0]
'i'
>>> str1[2:3]
'l'
>>> str1[-1]
'l'
>>> str1 + str2
'iilllloo'
>>> str1 * 3
'iilliilliill'
>>> '-' * 20
'--------------------'
>>> str1 = '''you are
... loser'''
>>> str1
'you are\nloser'

2.8.列表和元组

可以将列表和元组当成普通的数组,它能保存任意数量的Python对象。和数组一样通过0开始的数组索引访问元素,但是列表和元组可以存储不同的对象。

列表和数组的区别:列表使用[]包裹元素,元素的个数和元素的值可以被改变。元组用()包裹,不可以更改(内容假如为可变类型可以更改其内容)。元组看成是只读的列表,可以通过切片运算得到子集

>>> aList = [1, 3, 5, 7]
>>> aList
[1, 3, 5, 7]
>>> aList[:3]
[1, 3, 5]
>>> aList[:-1]
[1, 3, 5]
>>> aList[1] = 9
>>> aList
[1, 9, 5, 7]
>>> aTuple = ('aini', 77, 88, [123])
>>> aTuple
('aini', 77, 88, [123])
>>> aTuple[3]
[123]
>>> aTuple[:3]
('aini', 77, 88)
>>> aTuple[3] = 22
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

异常是指元组是不可变的

2.9.字典

由键-值对构成。一般由数字和字符串做键,可变类型列表不能做字典的键。值可以是任意Python对象。字典元素用大括号{}包裹

>>> data_base = {'name': 'cytus', 'age': 18}
>>> data_base['name']
'cytus'
>>> data_base.keys()
['age', 'name']
>>> for key in data_base:
...     print key, data_base[key]
...
age 18
name cytus

2.10.代码块及缩进对齐

代码块通过缩进对齐表达代码逻辑,可读性更高,能清楚的表达一个语句属于哪个代码块。代码块可以只有一个语句组成。

2.11.if语句

nums = int(raw_input("Input numbers: "))
if nums < 100:
    print 'The number is too small.'
elif nums > 1000:
    print 'The number is so big.'
elif nums <= 1000 and nums >= 100:
    print 'The number is fit.'
else:
    print 'Try some numbers.'

if用来判断条件是否复合程序要求,符合则进行下一步,不符合则终止,elif = else-if用于多个条件判断,else当以上if语句都不成立时才执行。

2.12.while循环

i = 0
while i < 10:
    print i + 1
    i += 1

在while循环下使用缩进表示语句在循环体中。while循环语句会一直无限循环,直到循环体内部break或者表达式的值变成0或False。

2.13.for循环和range()内建函数

Python中的for接受可迭代对象作为其参数,例如序列或迭代器,每次迭代其中一个元素。

str1 = [23, 232, 34, 3434]
for i in str1:
    print i
    
输出为一个列项序列,这是因为print语句默认给每一行添加一个换行符,只要在print语句的最后添加一个逗号,就可以改变它这种行为。
str1 = [23, 232, 34, 3434]
for i in str1:
    print i,
23 232 34 3434

带逗号的print语句输出元素之间会自动添加一个空格,来美观输出。

python range() 函数可创建一个整数列表,一般用在 for 循环中,用来输出一个递增计数的序列。

for i in range(7):
    print i
0
1
2
3
4
5
6

range()函数经常和len()函数一起用于字符串索引。

>>> foo = 'abc'
>>> for i in range(len(foo)):
...     print foo[i], '(%d)' % i
...
a (0)
b (1)
c (2)

但是这样操作只能循环一个,元素或者索引。而enumerate()函数很好弥补了这一点。

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

>>> for i, ch in enumerate(foo):
...     print ch, '(%d)' % i
...
a (0)
b (1)
c (2)

2.14.列表解析

列表解析表示你可以在一行中使用一个for循环将所有值放到一个列表当中:

a = [x ** 4 for x in range(3)]
for i in a:
    print i
0
1
16

还可以挑选出符合的值放入列表

a = [x ** 4 for x in range(8) if not x % 2]
for i in a:
    print i
0
16
256
1296

2.15.文件和内建函数open(),file()

文件访问是相当重要的一环,一些工作完成后,将它保存到持久存储很重要

使用open()函数打开一个文件

file_1 = open(filename, access_mode = 'r')

file_name变量包含我们希望打开的文件名,access_mode中'r'表示读取,'w'表示写入,'a'表示添加,'+'表示读写,'b'表示二进制访问。默认的文件模式是'r'读取。当一个文件对象返回后,就可以使用它的一些方法,比如readlines(),close()。文件对象的方法属性也必须通过句点属性标识法访问

核心笔记:什么是属性?

属性是与数据有关的项目。属性可以是简单的数据值,也可以是可执行对象。类,模块,文件,复数等对象都拥有属性,使用句点属性标识法,也就是在对象名和属性名之间加一个句号:例,list.append()

filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
    print eachLine,
fobj.close

以上的代码用来显示文件内容。

在print语句中使用逗号来印制自动生成的换行符号,文件的每行文本都自带了换行字符,如果我们不抑制print语句产生的换行符,文本在显示时就会有额外的空行产生。

file()内建函数功能跟open()函数一致,是一个工厂函数(生成文件对象)。

2.16.错误和异常

要给代码添加错误检测及异常处理,只需要将它们封装在try-except语句中。try之后的代码组,就是打算管理的代码,except之后的代码组,则是处理错误的代码。

try:
    filename = raw_input('Enter file name: ')
    fobj = open(filename, 'r')
    for eachLine in fobj:
        print eachLine
    fobj.close()
except IOError, e:
    print 'file open error: ', e

也可以通过raise语句抛出一个异常。

2.17.函数

Python中函数使用小括号调用,函数在调用之前必须先定义。如果函数中没有return语句,就会自动返回None对象。

2.17.1.如何定义函数

用def 关键字及紧随其后的函数名,再加上该函数需要的几个参数组成。(可以没有参数)以一个:号结尾。

def add(m):
     return m + m 

这个函数实现了自身相加

2.17.2如何调用函数

print add(3)
print add(20)
print add('abc')
6
40
abcabc

函数名加上()内所传递的参数(没有则不传),print语句输出函数返回值

2.17.3默认参数

函数的参数可以有一个默认参数,如果有提供默认值,在函数定义中,参数以赋值语句形式提供。

2.18.类

类是面向对象编程的核心,它扮演相关数据及逻辑容器的角色。

如何定义类

使用class关键字定义类。可以提供一个可选的父类或者说基类;如果没有合适的基类,就使用object作为基类

class MyClass(object):
      ...

2.19.模块

模块是一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件当中,模块可以包含可执行代码,函数和类,或者这些东西的组合。自己也可以创建模块,创建一个Python的源文件,模块名字就是不带.py后缀的文件名。用import导入使用

2.19.1如何访问一个模块函数或访问一个模块变量

一旦导入完成,模块的属性可以通过句点属性标识法访问

module.function()

module.variable

导入模块的方法,这里以random模块举例

import random
from random import randint
import random as randint
import random *

*表示取出random里面所有的属性

2.20.实用的函数

dir():显示对象的属性,如果没有提供参数,则显示全局变量的名字。

help():显示对象的文档字符串,没有提供参数则进入交互式帮助

int():将一个对象转换成整型

len():返回对象的长度

open(): 以mode方式打开一个文件

range(): 返回一个整型列表

raw_input():等待用户输入一个字符串,可以提供一个可选的参数str用作提示信息

str(): 将一个对象转换为字符串

type(): 返回对象的类型



猜你喜欢

转载自blog.csdn.net/qq_41805514/article/details/80166517