[python]语法要点与技巧

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值