Python学习笔记(一)

此笔记由廖雪峰老师的python教程整理所得,python教程网址如下:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

一、安装与使用

打开Notpad++文本解释器>写入代码>保存(保存时,文件路径不要有中文,文件名只能由字母,数字,下划线组成,后缀名为.py)
运行脚本>打开命令运行窗口(window+R—输入cmd)>将脚本文件拖入命令运行窗口>回车

二、字符串

1、ASCLL编码
ord()chr()函数能将字母于其对应数字互换

>>>ord('A')
65
>>>chr(65)
'A'

2、Unicode
若要在Python中输入中文,用 u'...'

>>>print u'中文'
中文
>>> u'中'
u'\u4e2d'

len()函数返回字符串的长度
3、保存源代码
当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
如果你使用Notepad++进行编辑,除了要加上# -- coding: utf-8 --外,中文字符串必须是Unicode字符串:
即书写为 u'中文字符串'
另外,申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保Notepad++正在使用UTF-8 without BOM编码:
(勾选Encoding>Encode in UTF-8 without BOM)
4、使用三引号(”’或”“”)可以指定一个多行字符串。

>>> a='''hello,
... world'''
>>> print a
>>>hello,
world

5、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。

>>> print('hello \n world')
hello
 world
>>> print(r'hello \n world')
hello \n world

6、字符串可以用 + 运算符连接在一起,用 * 运算符重复。
7、格式化

>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

三、集合

1、list [...]

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

list中元素,位置索引从 0 开始

>>> classmates[0]
'Michael'

可增加,删除,替换其中的元素,
追加元素到末尾 classmates.append()

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

将元素插入到指定位置 classmates.insert()

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

要删除list末尾的元素, classmates.pop()

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

删除指定位置的元素 classmates.pop(i) i是索引位置

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

把某个元素替换成别的元素,可以直接赋值给对应的索引位置

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

list 中元素类型可以不同,其中也可以包含另一个list

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>>s[2][1]
'php'

2、tuple
tuple与list十分类似,但,一旦初始化,就不能修改。

四、判断和循环语句

1、if ;else;elif

if 条件
    指令
    指令

如若满足,会将if下紧邻的所有缩进的程序执行完,例如:

age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

注意不要少写了:
elif是else if 的意思,
2、for 循环
for x in ... 把每个元素代入变量x,然后执行缩进块的语句

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print sum

range()函数,可以生成一个从0开始的整数序列。
3、while循环
while循环是:只要条件满足,就不断循环,条件不满足时退出循环。

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print sum

4、有关raw_input 的一些说明
raw_input 输入的数据是以字符串形式保存,若要输入整数,可用int()将其转化为整数,且int()只对数字有效

birth = int(raw_input('birth: '))

五、自定义函数

1、语法

def 函数名(参数):
    函数语句
    return

注意参数后面的:,函数返回值用return返回
在交互环境中定义函数,定义结束后,需按两次enter键,结束定义函数的环境
2、调用函数
如果自定义函数与调用函数在同一工作台下,直接调用
若不在同一工作台下,将文件放在同一工作目录下,利用如下指令

from A import B

其中A为自定义函数所在文件的文件名,B为自定义函数的名义,其中A文件名不加.py
3、空函数
若需定义一个什么也不做的函数,可以用pass 语句。实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
4、返回多个值
函数可以返回多个值,

return x,y,z...

多个值以tuple形式返回

六、函数参数

1、位置参数(必选参数)
例如,我们定义一个求 xn x n 的函数

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

在调用power函数时,应按位置顺序填入函数需接受的参数信息或准确指出参数所对应值,且都必填,否则,程序会报错。

>>>power(2,3)
8
>>>power(n=3,x=2)
8

2、默认参数
参数信息有默认选项,调用参数时,此块信息可填可不填

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

如上函数,默认定义了 n=2 n = 2 ,故调用power(5) 时,系统也不会报错。
从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

有多个默认参数时,调用的时候,既可以按顺序提供默认参数,比如调用enroll('Bob', 'M', 7),意思是,除了namegender这两个参数外,最后1个参数应用在参数age上,city参数由于没有提供,仍然使用默认值。

也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。比如调用enroll('Adam', 'M', city='Tianjin'),意思是,city参数用传进去的值,其他默认参数继续使用默认值。

最后,定义默认参数需要注意的一点是:默认参数必须指向不变对象。因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。

3、可变参数
在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
定义方式如下:

def 函数名称(*参数)
    函数语句

此时该参数接收到的是一个 tuple, 故,调用该函数时可以传入任意个参数,包括0个参数。
例子:计算 a2+b2+c2+ a 2 + b 2 + c 2 + ⋯

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

如果已经有一个list或者tuple,要调用一个可变参数:可在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

4、关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
定义格式:

def 函数名称(**kw(参数))
    函数语句

例如,定义一个输入除了名字,年龄必选外,其他可选择输入的函数

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

调用:

>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

和可变参数类似,也可先定义一个dict,再将dict转化为可变参数,导入函数中。

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

此时,kw得到的是extra的一份拷贝,对kw的操作不会影响extra

5、命名关键字参数
如果要限制关键字参数的名字,就可以用命名关键字参数
例如:只接收city和job作为关键字参数。这种方式定义的函数如下:

def person(name, age, *, city, job):
    print(name, age, city, job)

调用:

>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer

此处,调用时,cityjob为必输参数,且调用时,必须加上参数名,即city='Beijing',而不能输入为'Beijing'
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name, age, *args, city, job):
    print(name, age, args, city, job)

命名关键字参数也可以有默认值。
6、参数组合
Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值