Python语法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python语法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含11815字,纯文字阅读大概需要17分钟。
内容图文
1、import os
os.getcwd()方法返回当前工作目录
os.path.join()把目录和文件名合成一个路径
2、import sys
sys.path.append(’引用模块的地址')
当我们要添加自己的搜索目录时,可以通过列表的append()方法
1.对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append('xxx'):
eg. import sys
sys.path.append(’引用模块的地址')
2.把路径添加到系统的环境变量,或把该路径的文件夹放进已经添加到系统环境变量的路径内。环境变量的内容会自动添加到模块搜索路径中。
p.s.可以通过dir(sys)来查看他里面的方法和成员属性。
3、python2输出不换行(默认换行)
x="a"
y="b"
print x,
print y,
print x,y
输出 a b a b
python3输出不换行
print(x, end=" ")
print(y, end=" ")
print(x,y)
输出 a b a b
4、if条件语句格式,依靠缩进来判断是否为此条件语句
if expression :
suite
elif expression :
suite
else :
suite
5、查看当前版本所有关键字(变量不可用)
>>>import keyword
>>>keyword.kwlist
反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
字符串可以用 + 运算符连接在一起,用 * 运算符重复。
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始
Python中的字符串不能改变。
Python可以使用-h参数查看各参数帮助信息:
6、关于 import 的小结,以 time 模块为例:
1)将整个模块导入,例如:import time,在引用时格式为:time.sleep(1)。
2)将整个模块中全部函数导入,例如:from time import *,在引用时格式为:sleep(1)。
3)将模块中特定函数导入,例如:from time import sleep,在引用时格式为:sleep(1)。
4)将模块换个别名,例如:import time as abc,在引用时格式为:abc.sleep(1)。
7、字符串内容为浮点型转换为整型时操作
a='2.1' #字符串
print(int(float(a)))
输出2
8、Python的变量赋值
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
多个变量赋值 a, b, c = 1, 2, "runoob" 两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c
9、Python的六个标准数据类型
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
10、基本运算:在混合计算时,Python会把整型转换成为浮点数。
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
11、Python中的字符串不能改变: 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
12、List(列表)
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
t=['a','b','c','d','e']
print(t[1:3]) 输出['b','c']
print(t[:]) 输出['a','b','c','d','e']
与Python字符串不一样的是,列表中的元素是可以改变的:t[0] = 9
13、Tuple(元组)
与列表类似,元组的元素不可修改,写在()里,元素间用逗号隔开,元素类型可以不同
可以把字符串看做特殊元组
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表
t=['a','b','c','d']
y=(t,'e')
print(y) #输出(['a', 'b', 'c', 'd'], 'e')
t[0]='f' #输出(['f', 'b', 'c', 'd'], 'e')
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
拓展:
1)一般函数返回值是一个,当函数返回多个值时,可以元组形式返回return (a,b)
2)Python函数可接收可变长参数,比如以*开头的参数名,会将所有参数收集到一个元组上
#!/usr/bin/python
def test(*args):
print(args)
return args
print(type(test(1,2,3)))
输出
(1, 2, 3)
<class 'tuple'> #返回值的type元组
14、Set(集合)
由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student) # 输出集合,重复的元素被自动去掉
输出
{'Mary', 'Jim', 'Rose', 'Jack', 'Tom'}
基本功能是进行成员关系测试和删除重复元素
可以使用大括号 { } 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
输出
{'b', 'd', 'r'}
{'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
{'a', 'c'}
{'l', 'r', 'z', 'm', 'b', 'd'}
15、Dictionary(字典)
列表是有序的对象集合,字典是无序的对象集合
字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型(理解上是用字符串这种)。
在同一个字典中,键(key)必须是唯一的
创建方式:
1)
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
print(tinydict['name']) #指定键输出值
输出
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])
runoob
2)构造函数 dict() 可以直接从键值对序列中构建字典
x=dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
print(x['Taobao'])
输出 3
拓展:
1)字典采用散列表(hashtable)算法:不管字典中多少项,in操作符花费时间都差不多
把字典对象作为for迭代对象,会遍历字典的键
def example(d):
# d 是一个字典对象
for c in d:
print(c)
#如果调用函数试试的话,会发现函数会将d的所有键打印出来;
#也就是遍历的是d的键,而不是值.
2)字典遍历
dict1 = {'abc':1,"cde":2,"d":4,"c":567,"d":"key1"}
for k,v in dict1.items():
print(k,":",v)
3)字典键值对的一种添加方式
dict.Append(ENV=os.environ['PATH']) #对应添加一个ENV的键,值对应$(PATH)
16、数据类型转换
需要对数据内置的类型进行转换,数据类型的转换,只需要将数据类型作为函数名即可。
17、type和isinstance用于判断数据类型区别
type 是用于求一个未知数据类型对象,而 isinstance 是用于判断一个对象是否是已知类型。
type 不认为子类是父类的一种类型,而isinstance会认为子类是父类的一种类型。
可以用 isinstance 判断子类对象是否继承于父类,type 不行。
综合以上几点,type 与 isinstance 虽然都与数据类型相关,但两者其实用法不同,type 主要用于判断未知数据类型,
isinstance 主要用于判断 A 类是否继承于 B 类:
18、pass指令的使用(空函数或是空的类中)
def sample(n_samples):
pass
该处的 pass 便是占据一个位置,因为如果定义一个空函数程序会报错,当你没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。
19、注释:
单行注释
print("hello world!") #这是一行注释
多行注释
"""
这是
多行
注释
"""
print("hello world!")
20、执行SConscript脚本文件
env.SConscript(scripts, [exports, variant_dir, duplicate])
scripts:对应的SConscript文件(路径)
exports:提供变量名称列表或导出到script的命名值字典(简单来说就是调用的SConscript脚本会import这部分,可能用到)
variant_dir:Sconscript位于源码目录之下,就像位于variant_dir目录下一样(我理解的是这样:比如Sconscript脚本编译生成一个libwpa.a静态库,经过此参数指定,生成的libwpa.a会在指定目录下)
duplicate: 表示是否备份目标文件
例
env.SConscript( 'SConscript', {'env':env, 'env_cfg':env_cfg, 'module':module}, variant_dir="build/buid_tmp/module", duplicate=0)
scripts: 'SConscript'
exports: 此字典{'env':env, 'env_cfg':env_cfg, 'module':module} 对应SConscript脚本会执行Import('env'),Import('env_cfg'),Import('module')
variant_dir:路径 "build/buid_tmp/module",最终生成SConscript脚本执行生成静态库文件会存在这个路径下
duplicate: 此处指定0,不备份
21、lambda关键字
lambda 定义匿名函数,并不会提高程序运行效率,只会使代码更简洁
可以使用for...in...if来完成的,坚决不用lambda
如果要用,不要包含循环
例
g=lambda x:x+1
调用执行g(1)输出2,g(2)输出3
等同于
def g(x)
map关键字配合lambda关键字使用
lib_paths=["/build/libs","/build/scripts"]
例map(lambda x:'-L%s'%x, lib_paths) #实现lib_paths列表元素加指定前缀
最终["-L/build/libs","-L/build/scripts"]
22、Builder总结(Scons下自定义方法)
如果我们需要实现一些特殊文件的处理,且Scons默认没有可支持的方法,这时可用Builder自己写
Builder一般绑定构造环境去使用
例
1)
env = Environment() #构造环境
bld = Builder(action = 'foobuild < $SOURCE > $TARGET', #文件处理方法:指定源文件和目标文件后缀
suffix = '.foo',
src_suffix = '.input')
env.Append(BUILDERS = {'Foo' : bld}) #添加到构造环境中,可调用
env.Foo('file1') #调用方法实现file1的处理
env.Foo('file2') #调用方法实现file2的处理
执行 scons -Q
输出
foobuild < file1.input > file1.foo
foobuild < file2.input > file2.foo
2)
def build_function(target, source, env):
# Code to build "target" from "source"
return None
bld = Builder(action = build_function, #也可直接指定自定义函数执行
suffix = '.foo',
src_suffix = '.input')
env = Environment(BUILDERS = {'Foo' : bld})
env.Foo('file')
错误示范:
bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
env = Environment(BUILDERS = {'Foo' : bld})
env.Foo('file.foo', 'file.input')
env.Program('hello.c')
执行会报错:找不到Program方法
原因:Program()是默认方法,随构造环境的生成已定义好,当我们在创建构造环境时直接指定$BUILDERS为我们自定义的方法,构造环境自带的一系列默认方法就不存在了
解决:env.Append(BUILDERS = {'Foo' : bld})
进度:运算符
23、运算符(只列出了特有的几个)
1) 算数运算符:
** 幂运算 x**y 返回x的y次幂
// 取整除 9//2 向下取接近商的整数,输出4 -9//2 输出-5
2) 比较运算符、位运算符、与C一致
3) 赋值运算符:
:= 海象运算符(Python3.8新增) 可在表达式内部为变量赋值
例
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)") #避免len(a)运行两次
若无海象运算符可写成:
n = len(a)
if n > 10:
print(f"List is to long({n} elements, expected <= 10)") #避免len(a)两次运行,多了一次赋值给中间变量的步骤
4) 逻辑运算符:
x and y 与运算
x or y 或运算
not x 非运算
5) 成员运算符:
in 如果在指定序列中找到值返回True,否则返回False
not in 如果在指定的序列中没有找到值返回True,否则返回False
例
a=1
b=10
list=[1,2,3,4,5]
if( a in list )
print("变量a在序列中")
if( b not in list)
print("变量b不在序列中")
6) 身份运算符:用于比较两个对象的存储单元
is 判断两个标识符是否引用自一个对象 x is y,类似id(x)==id(y)
is not 判断两个标识符是否引用自不同对象 x is not y,类似id(x)!=id(y)
id()函数用于获取对象内存地址
a=20
b=20
if(a is b)
print("a和b具有相同标识") #会输出
b=30
if(a is not b)
print("a和b没有相同的标识") #会输出
误区:
is 判断两个变量是否引用同一内存地址
== 判断两个变量是否相等
例:
a=[1,2,3,4]
b=a
c=a[:]
print(id(a))
print(id(b))
print(id(c))
if(a==b):
print("a==b")
if(a==c):
print("a==c")
if(b==c):
print("b==c")
输出:(a,b的id是一样的,c不同,但相等)
140435195029192
140435195029192
140435196366792
a==b
a==c
b==c
24、数字
Python中数据类型不允许改变,这意味着如果改变数字数据类型的值,将重新分配内存空间
var1=10
del var1 #del语句删除单个或多个对象的引用
Python3中整型(int)不限制大小,可当Long类型使用,没有Long类型
复数(complex)由实数部分和虚数部分构成,可用a+bj或complex(a,b)表示,实部虚部都是浮点型
内容总结
以上是互联网集市为您收集整理的Python语法全部内容,希望文章能够帮你解决Python语法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。