2023年6月29日发(作者:)
Python与JavaScript语法差异点随着⼈⼯智能技术的普及,越来越多的前端程序员开始关注相关技术。Python 作为⼈⼯智能领域最常⽤的语⾔,与前端程序员⽇常使⽤的语⾔ JavaScript 同属脚本语⾔,且在两者发展过程中,社区也多有相互借鉴之处,因此有很多相似。⼀个熟悉 JavaScript 语⾔的前端程序员,通过掌握了他们之间的不同之处,可以快速上⼿ Python 。以下是我学习过程中记录的 Python 不同于 JavaScript 的语法点,⽅便随⼿查阅。类型与运算布尔类型两种关键字为 True False逻辑运算与、或、⾮关键字为 and or not空值为 None精确除法 / ; 取整除法 //格式化字符串(类似模板字符串)的占位符 '%d %f %s %x' % (1, 1.2, 'aaa', '0x16')各类型与布尔类型的转换:只要x是⾮零数值、⾮空字符串、⾮空list等,就判断为True,否则为False。强类型,不同类型⽆法⽐较,需使⽤显式的转换函数代码结构冒号与缩进表⽰代码块,缩进多少不做规定条件判断:if a > b: a++elif: b++else: c++循环遍历数组采⽤ for in暂时空缺的语句块可以⽤关键字pass占位try语句块:try: print('') r = 10 / 0 print('result:', r)except ZeroDivisionError as e: print('except:', e)finally: print('')print('END')抛异常:raise FooError('invalid value: %s' % s)list 和 tuple列表分为list和tuple获取list长度 len()获取list最后⼀个参数 datas[-1],倒数第⼆个 datas[-2]list操作⽅法:末尾增加 (data)指定位置插⼊:(index, data)删除末尾:()删除指定位置:(index)list中数据类型可不同,这⼀点与JavaScript相同tuple是不可变的listtuple定义:(1, 2, 3)仅⼀个元素的tuple:(1.2, )dict 与 set类似Map的类型称为为dict通过d['key']查找若key不存在会报错可⽤'key' in d 运算判断是否包含('key')查找若不存在返回Nonedict可⽤('key')删除元素dict的key须采⽤字符串、整数等不可变数据类型set只包含不重复的key要创建⼀个set,需要提供⼀个list作为输⼊集合:s = set(list),会⾃动过滤重复元素set增加 add(key)set删除 remove(key)set的交集、并集操作 s1 & s2 ; s1 | s2集合操作切⽚:L[a: b: c]从a到b(左闭右开,⽀持倒数)每c个取⼀个tuple和str也可切⽚,结果还是原类型for in迭代dict默认是迭代key迭代dict的value:for value in ()迭代dic的key、value:for k, v in ()下标循环:for i, value in enumerate(['A', 'B', 'C']):引⽤多个变量的循环:for x, y in [(1, 1), (2, 4), (3, 9)]:列表⽣成式:[x * x for x in range(1, 11) if x % 2 == 0],[m + n for m in 'ABC' for n in 'XYZ']列表⽣成器:可动态的⽣成列表中的元素,节省内存空间列表⽣成器(generator)创建⽅式将列表⽣成式外⾯的[]改为()定义generator函数变量互换:a, b = b, aIterable包括list、tuple、dict、set、strIterator包括generatorIterator是惰性求值的可使⽤iter()函数将Iterable转换为IteratorIterable和Iterator都可使⽤for,只有Iterator可使⽤next()map()的返回值类型是Iteratorreduce()的回调函数接受两个参数,类似斐波那契数列,返回值类型是list元素的类型sorted()函数第⼆个命名关键字参数,将原来的元素映射为可排序的函数函数参数数量和类型必须与定义⼀致,否则会报错数据类型转换函数 int() float() str() bool()函数定义def abc(x): return 0函数可以返回多个值,本质上是构成了⼀个tuple可⽤power(x, n=2)的形式定义默认参数如调⽤函数时不是按顺序省略参数,可⽤如下形式:enroll('Adam', 'M', city='Tianjin')默认参数必须指向不变对象,否则多次调⽤函数且修改参数时可能存在问题参数类型:⼀般的参数叫做位置参数,通过在参数表中的位置表明关系;可变参数定义函数calc(*numbers)会将传⼊的多个参数组成tuple,在调⽤时calc(*[1,2,3])表⽰将该list作为可变参数传⼊;关键字参数定义函数def person(name, age, **kw):会将传⼊的键值对作为dict传⼊,调⽤如person('Adam', 45, gender='M',job='Engineer');命名关键字参数为分隔符*之后的参数def person(name, age, *, city, job),必须这样调⽤person('Jack', 24, city='Beijing',job='Engineer'),如果函数定义中已经有了⼀个可变参数,后⾯跟着的命名关键字参数就不再需要⼀个特殊分隔符了:defperson(name, age, *args, city, job):,命名关键字参数传⼊时必须带有参数名,命名关键字参数也可设置默认值def person(name, age, *,city='Beijing', job):各类型顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数匿名函数 lambda x: x * x 仅可有⼀个不需要写return的表达式装饰器@可调⽤⾼阶函数修改函数定义偏函数l的作⽤就是,把⼀个函数的某些参数给固定住(也就是设置默认值),返回⼀个新的函数,调⽤这个新函数会更简单。⾯向对象类的定义:class Student(object):构造函数:def __init__(self):实例的变量名如果以__开头,就变成了⼀个私有变量(private),只有内部可以访问,外部不能访问查看类型:type()查看继承关系:isinstance()实例属性通过构造函数中定义 = name,类的属性直接写,类属性通过实例直接调⽤,为共享的,先看实例有没有,没有 就调⽤类属性给对象绑定⽅法后所有实例都可使⽤可通过__slots__ = ('name', 'age')限定类的实例可绑定的属性可通过装饰器@property、@定义访问器可多重继承class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):包与模块⽬录下必须有__init__.py才是包,__init__.py即是该包的模块任何模块代码的第⼀个字符串都被视为模块的⽂档注释;
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687977176a62829.html
评论列表(0条)