文章目录

  • ​​笔记一:title方法​​
  • ​​笔记二:strip方法​​
  • ​​笔记三:异常处理​​
  • ​​笔记四:关键字in,not in​​
  • ​​笔记五:函数​​
  • ​​笔记六:目录相关​​
  • ​​笔记七:文件操作​​
  • ​​笔记八:列表​​
  • ​​笔记九:json模块​​

笔记一:title方法

>>> name = 'naruto SASUKE SaKUra'
>>> print(name.title()) # title方法将目标字符串的所有单词以首字母大写开始,其余均为小写
Naruto Sasuke Sakura

笔记二:strip方法

>>> s = '              naruto    '
>>> s.rstrip() # rstrip剔除字符串右边的空白
' naruto'
>>> s.lstrip() # lstrip剔除字符串左边的空白
'naruto '
>>> s.strip() # strip剔除字符串两边的空白
'naruto'

笔记三:异常处理

Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

异常是使用try-except 代码块处理的。try-except 代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except 代码块时,即便出现异常, 程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback。

当自己认为可能发生错误,可用try-except代码块来处理可能发生的异常,将导致错误的代码行放在一个try 代码块中。如果try 代码块中的代码运行起来没有问题,Python将跳过except 代码块;如果try代码块中的代码导致了错误,Python将查找这样的except 代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。有时候,有一些仅在try代码块成功执行时才需要运行的代码,这些代码应放在else 代码块中。

>>> try:
... print(5/0)
... except ZeroDivisionError:
... print("You can't divide by zero")
... else:
... print('successful')
...
You can't divide by zero

使用try-except语句时,若想程序在遇到异常时,不做任何反应,可以在except语句中加上pass,如下:

>>> try:
... 1/0
... except ZeroDivisionError:
... pass
...

这样的话,程序在遇到except指定的异常时,只会忽略异常,继续执行下面的代码。


笔记四:关键字in,not in

>>> letters = ['a', 'g', 'd', 'b']
>>> 'a' in letters
True
>>> 'c' in letters
False
>>> 'l' not in letters
True
>>> 'd' not in letters
False

笔记五:函数

>>> def describe_pet(pet_name, animal_type = 'cat'):
... """显示宠物的信息"""
... print('\nI have a ' + animal_type + '.')
... print('My ' + animal_type + "'s name is "+ pet_name.title()+'.')
...
>>> describe_pet('Cidy')

I have a cat.
My cat's name is Cidy.
>>> describe_pet('Doge', 'Dog')

I have a Dog.
My Dog's name is Doge.

在上面的代码中,给第二个形参指定了默认值,调用函数时给形参提供了实参时,python将使用指定的实参;若未指出,则使用形参的默认值。

注意:使用默认值时,在形参列表必须先列出无默认值的形参,再列出有默认值的实参,这让python依然能够正确解读位置实参。

在使用列表作为函数的实参时,若不想使列表被改动,可以把列表的副本传给函数,比如list[:]即为list的副本。

>>> def make_pizza(*toppings):
... """概述要制作的披萨"""
... print('Making a pizza with the following toppings:')
... for topping in toppings:
... print('-', topping)
...
>>> make_pizza('abc', 'edf', 'ghi')
Making a pizza with the following toppings:
- abc
- edf
- ghi

在上述代码中,形参​​*toppings​​​的​​*​​让python创建一个元组,名为toppings,并且将调用该函数时接受到的所有值均封装到这个元组中。python将实参封装到一个元组中,即使是一个值也是如此。

>>> def make_pizza(*toppings):
... print(type(toppings))
...
>>> make_pizza('abc','def') # 输出证明toppings是一个元组
<class 'tuple'>

如果要使函数接受不同类型的实参,必须在函数定义中将接纳任意数量的实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

>>> def build_profile(first, last, **user_info):
... profile = {}
... profile['first_name'] = first
... profile['last_name'] = last
... for key, value in user_info.items():
... profile[key] = value
... return profile
...
>>> user_profile = build_profile('wei', 'xue', location = 'Shanxi', field = 'computer')
>>> print(user_profile)
{'first_name': 'wei', 'last_name': 'xue', 'location': 'Shanxi', 'field': 'computer'}

上述代码中,函数接收名,姓,和任意数量的关键字实参,两个星号**让python创建名为user_info的空字典,并且将所有关键字实参封装到字典中。

>>> def build_profile(first, last, **user_info):
... print(type(user_info))
...
>>> build_profile('wei', 'xue', location = 'Shanxi', field = 'computer') # 输出证明user_info是一个字典
<class 'dict'>

笔记六:目录相关

>>> import os
>>> os.getcwd() # 获取当前工作目录,get current working directory
'C:\\Users\\15011'
>>> os.chdir('d:') # 改变目录,change directory
>>> os.getcwd() # 目录已经改变了
'D:\\'

笔记七:文件操作

文件test.txt内容:

I'm Chinese.
I can speak English.
I have a brother.
I will earn much money to live a good life.

读取文件:

>>> with open('test.txt', 'r') as file_object:
... contents = file_object.read()
... print(contents)
...
I'm Chinese.
I can speak English.
I have a brother.
I will earn much money to live a good life.

上述代码中,open()函数的参数是要打开的文件名,并且返回一个表示该文件的对象,python将这个对象存储在file_object变量里。with使python在不需要访问文件后将文件关闭。file_object表示文件对象,read()方法读取文件的全部内容,并且将内容作为字符串存储在contents中。

>>> with open('test.txt') as file_object:
... for line in file_object: # 遍历文件的每一行
... print(line)
...
I'm Chinese.

I can speak English.

I have a brother.

I will earn much money to live a good life.

上述代码中,打印时,print打印时会加一个换行符,原文本每段之间也有一个换行符,总共两个,因此,打印时段与段之间会出现一个空行。

>>> with open('test.txt') as file_object:
... lines = file_object.readlines()
...
>>> lines
["I'm Chinese.\n", 'I can speak English.\n', 'I have a brother.\n', 'I will earn much money to live a good life.']
>>> for line in lines:
... print(line.rstrip()) # rstrip()去掉每行结尾的换行符
...
I'm Chinese.
I can speak English.
I have a brother.
I will earn much money to live a good life.

上述代码中,readlines()方法从文件读取每行,作为一个个字符串(包括结尾的换行符\n)并存储在一个列表中,列表的元素由字符串组成。

>>> with open('test.txt', 'w') as file_object:
... file_object.write('naruto sasuke') # 会输出刚刚写入字符的个数
...
13

上述代码中,open()有两个实参:文件名和‘w’,后者告诉Python,要以写入模式打开文件。

读取模式(‘r’),写入模式(‘w’),附加模式(‘a’),能读取和写入文件的模式(‘r+’)。省略模式实参,将以只读方式打开。


笔记八:列表

>>> letters = ['a', 'b', 'c']
>>> letters.insert(1, 'naruto')
>>> letters
['a', 'naruto', 'b', 'c']

上述代码中,使用列表的insert方法,在指定索引处添加新元素,而包括原先索引及其以后的元素均向后移一位。

>>> letters = ['a', 'b', 'c']
>>> del letters[1] # 这里,del(letters[1])也行
>>> letters
['a', 'c']

若需要删除列表元素时,知道该元素的索引或位置,可以del语句,上一操作,将索引值为1(即第二个位置上)的元素’b’删除了。

>>> letters = ['a', 'b', 'c']
>>> popped_letters = letters.pop()
>>> popped_letters
'c'
>>> letters
['a', 'b']

上述代码中,pop()方法将列表末尾元素弹出(删除),并将其值返还给popped_phone。

>>> letters = ['a', 'b', 'c']
>>> popped_letters = letters.pop(1)
>>> popped_letters
'b'
>>> letters
['a', 'c']

上述代码中,要弹出列表中指定位置的元素,只需在pop()的括号内填入索引号。

del语句与 pop()方法均可删除列表中的元素,若还要使用被删除的元素,则使用方法pop(),若删除的元素不会被使用,使用del语句。

>>> letters = ['a', 'b', 'c']
>>> letters.remove('b')
>>> letters
['a', 'c']

列表的remove方法删除列表中的指定值

>>> letters = ['a', 'b','a', 'c', 'd', 'a']
>>> while True:
... if 'a' in letters:
... letters.remove('a')
... else:
... break
...
>>> letters
['b', 'c', 'd']

remove方法只能删除第一个指定值,若要删除的值在列表中出现多次,则需要使用循环判断是否删除了所有这样的值。

>>> nums = [1, 4, 5, 2, 3]
>>> nums.sort()
>>> nums
[1, 2, 3, 4, 5]

对列表采用sort()方法,将永久改变原列表的排列顺序,使其按大小顺序排列,且无法回到之前的顺序。

>>> cars = ['aodi', 'qq', 'falali', 'bentian']
>>> cars.sort(reverse=True)
>>> cars
['qq', 'falali', 'bentian', 'aodi']

也可对字母型列表排序,默认顺序为从小到大,若添加参数​​reverse = True​​,则排序结果为逆序。

>>> nums = [1, 4, 5, 2, 3]
>>> sorted(nums)
[1, 2, 3, 4, 5]
>>> sorted(nums, reverse=True)
[5, 4, 3, 2, 1]
>>> nums
[1, 4, 5, 2, 3]

使用sorted对列表排序,并不会将列表的原有顺序改变,只是暂时显示排序后的列表。sorted()与sort()均可传递参数​​reverse=True​​,使列表按相反的顺序显示。

>>> nums = [1, 4, 5, 2, 3]
>>> nums.reverse()
>>> nums
[3, 2, 5, 4, 1]
>>> nums.reverse()
>>> nums
[1, 4, 5, 2, 3]

列表的reverse()方法将反转元素的排列顺序,并且是永久性的;若要恢复之前的顺序,只需再次调用reverse()方法即可。

笔记九:json模块

模块json使我们能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。还可以使用json在Python程序之间分享数据。

下面有两个程序:1、存储一组数字的程序;2、将数字读取到内存的程序。

>>> import json
>>> nums = [1,2,3,4,5] # 要存到文件中的数据
>>> filename = 'nums.json' # 要存到哪个文件中,需要指出文件名
>>> with open(filename, 'w') as file_object:
... json.dump(nums, file_object)
...
>>>

使用json.dump()来存储数字列表:json.dump()将数字列表存到以’numbers.json’为文件名的文件中。函数接受两个参数,要存储的数据和可用于存储数据的文件对象。程序没有输出,打开文件’numbers.json’后,可看到数据。

初学Python时的一些笔记整理_Python

>>> import json
>>> filename = 'nums.json'
>>> with open(filename) as file_object:
... nums = json.load(file_object)
...
>>> print(nums)
[1, 2, 3, 4, 5]

使用json.load()将存在文件中的列表读到内存,然后存储到nums变量中。

END