文章目录
1 With…As语句
with as 语句介绍:
https://www.jianshu.com/p/1a02a5b63c88
2 字符串操作
2.1 查找
方法如下:以后再整理
if str1 in str2:
包含的话,True
if str1.find(str2)>=0:
包含的话,返回第一次出现的位置,没有的话为负数
2.2 替换
https://www.runoob.com/python/att-string-replace.html
2.3 切片
https://www.runoob.com/w3cnote/python-string-index.html
2.4 各种操作
https://www.runoob.com/python/python-strings.html
3 数据类型及其定义
参见:https://www.runoob.com/python3/python3-data-type.html
3.1 标准数据类型
标准数据类型
Python3 中有六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
3.2 三种符号的应用
元组用()
列表用 [ ] ,列表可嵌套。实际上,许多矩阵、多维度形状的运算都是嵌套的列表。
字典和集合用{ }。
3.3 列表、字典、集合定义
python中,变量不需要声明,但需要定义,只有定义了才能使用,定义的方法就是给他赋值。
那么对于可变类型的,如果想定义一个空的,按照如下方式定义:
s=[] #定义一个空列表
s = set() #定义一个空集合
s = {} #定义一个空字典
其他定义和初始化方法参见:
https://www.cnblogs.com/david-lcw/p/10051275.html
3.4 变量、对象、类与类型
在 python 中,类型属于对象,变量是没有类型的。
a=[1,2,3]
a="Runoob"
变量 a是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。
对象是有类型的,变量指向的对象类型才是type(a)返回的意义。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
3.5 字符串格式化
"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)
例如:
num = 100
print "%d to hex is %x" %(num, num)
更多详细情况参见:https://www.cnblogs.com/wilber2013/p/4641616.html
4 函数
3.1 函数的参数值与引用传递
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
3.2 各种各样的参数
参数
以下是调用函数时可使用的正式参数类型:
必需参数
关键字参数
默认参数
不定长参数
参见:https://www.runoob.com/python3/python3-function.html
3.3 返回多个值
将要返回的值通过 “,”隔开返回即可。
示例:
def fun():
a,b = 1,2.0
return a,b
调用方法如下,有两种接收返回值的方式:
def callFun():
ret = fun() # ret为元组,值为(1,2.0)
a1 = ret[0] # a1 = 1
b1 = ret[1] # b1 = 2.0
a2,b2 = func() # a2 = 1, b2 = 2.0
返回多个值类似的方式定义即可!
此外,可以将一组值作为一个列表返回也行,如下示例。
def fun2():
a = [1,2.0]
return a
def callFun():
ret = fun2() # ret为列表类型,值为[1,2.0]
a1 = ret[0] # a1 = 1
b1 = ret[1] # b1 = 2.0
a2,b2 = func2() # 注意,这样也是正确的!!a2 = 1, b2 = 2.0
虽然,也能将这些值返回来,但这个函数返回的则是一个值,只不过这个值是一个列表类型而已!!而且python中列表中的各元素类型可以是混杂、不同的,所以也可以达到类似目的!!
注意最后一种方式也是可以的。
但不管以上那种方式,数量要相容,要么使用一个变量接收整个,如果使用多个时,那么接收的变量个数要与返回的个数数量一致!!
如下面是不对的!!
def fun3():
a,b,c = 1,2.0,3
return a,b,c
def callFun():
ret = fun3() # ret指向元组类型,值为(1,2.0,3)
a2,b2 = func3() # 错误,数量不匹配!!
5 异常信息的获取
关于异常,这里有较详细的介绍:https://www.runoob.com/python3/python3-errors-execptions.html
但这里很可惜,没有针对如何获取异常信息的介绍。
总结下,获取的结构如下:
import traceback #需要导入此模块,使用traceback.XX
try:
#。。。
except Exception as e:
#print (str(Exception))
#print (str(e)) #返回字符串类型,只给出异常信息,不包括异常信息的类型
#print(e.args) #同str(e),获取的信息也较少
print(repr(e)) #给出较全的异常信息,包括异常信息的类型,如1/0的异常信息
#print (traceback.format_exc()) #同repr(e)
print( traceback.print_exc())
1、str(e),e.args
返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息
‘integer division or modulo by zero’
注意:早期版本有e.message,同现在这两个一样,但新的版本已经没有这个信息了,会报错!
2、repr(e)
给出较全的异常信息,包括异常信息的类型,如1/0的异常信息
“ZeroDivisionError(‘integer division or modulo by zero’,)”
3、采用traceback模块
需要导入traceback模块,此时获取的信息最全,与python命令行运行程序出现错误信息一致。使用traceback.print_exc()打印异常信息到标准错误,就像没有获取一样,或者使用traceback.format_exc()将同样的输出获取为字符串。你可以向这些函数传递各种各样的参数来限制输出,或者重新打印到像文件类型的对象。
6 命令行输入
6.1 概述
python中使用这个input函数实现从控制台的输入。
input([prompt])
(1)可以输入提示信息prompt
(2)prompt中加‘\n’换行
(3)返回的结果按照字符串处理
(4)这里有这个函数的简介:https://www.runoob.com/python3/python3-func-input.html
cmd = input('Input E to exit,or Any Other key to continue\n') #输入提示信息,并换行输入
print('Your input is:\n') #输出他的换行信息
print(cmd)
6.2 输入多个参数
默认输入的当一个完整的字符串,当我们需要输入多个参数直接获得这些参数时,可以对输入结果进行分割处理。这里要结合split函数一起处理,split函数的参数是分隔符。如:
a,b = input('input a b').split() #默认使用空格分开
print(a)
print(b)
a,b = input('input a,b').split(',') #使用逗号分开
print(a)
print(b)
6.3 返回的结果进行类型转换
可以结合转换函数直接转换。例如输入int时
a = int(input('input int num\n'))
b = a + 1
print(b)
如果是多个参数时,不能用上边的方式是不行的,如下面是错误的
a,b = int(input('input a b\n').split()) #报错!
这是因为返回的是a,b列表,不能对列表类型进行int()转换。
可以使用map函数来转换
a,b=map(int,input('input a b\n').split())
c = a+b
print(c)
参见这里:
https://www.runoob.com/python/python-func-input.html
https://blog.csdn.net/qq_46018836/article/details/105199040
参考:https://www.jianshu.com/p/e855c82ec884
https://www.jianshu.com/p/dba637f334a8