美文网首页
Python 基础

Python 基础

作者: 李霖弢 | 来源:发表于2019-11-30 14:20 被阅读0次

简介

Python是强类型(不允许隐式转换)、动态类型语言(在执行时才检查变量类型,允许变量重新赋值为其他类型、为对象自定义添加属性)。

基础语法

  • #或字符串表达单行注释,'''"""字符串表达多行注释,采用缩进(约定为四个空格)表达代码块,而非大括号{}
# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)
  • 单行语句
    Python 通常是一行写完一条语句 , 或通过 ; 分隔在一行内显示多条语句
  • 多行语句
    使用\可实现多行语句
total = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用\,例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']
  • 赋值
a=10
a,b,c=20,a+5,100
print(a,b,c)#20 15 100
d,e,f=(1,2,3)
print(d,e,f)#1 2 3
  • 通过id(<变量名>)可以获取目标对象的内存地址

数据类型

  • 数字 : 整数int(0x前缀表示十六进制)、浮点数float
  • 字符串str : 转义字符\n表示换行, r'...' 表示自然字符串(无视转义字符),'''...'''"""..."""表示多行内容(或注释),可以与r配合使用
>>> print('''Line1
Line2
Line3''')

等价于

'Line 1\nLine 2\nLine 3'
  • 布尔值 bool
    True、False

    • 布尔运算
      and、or、not
  • 空值 None

  • bytes
    用带b前缀的单引号或双引号表示

判别数据类型
  • isinstance()
    子类属于祖先类为真
    如判断100是否为数字
isinstance(100, (int, float))#true
  • type()
type(10)#<class 'int'>

输出 print

每次 print 输出默认是换行的,如果要实现不换行需要在变量末尾加上 end="":

print( 'a', end=" " )
print( 'b', end=" " )

输入 input

print ("请输入你的名字")
name=input()
print (name)

四种数据结构(容器)

1. 列表list

  • 类似js的Array
  • 使用负数当索引可以获取倒数的元素
插入元素
  • .append(newItem)
  • .insert(index,newItem)
删除元素
  • .pop(index)
    不传入index则默认删除末尾元素

2. 元组 tuple

  • 元组比列表更省内存
  • 其中每个元素的指向不能改变,也不能新增/删除元素
  • 当只有一个元素时需加,否则()会被解析为数学公式的小括号
t = (1,)

3. dict 字典

类似js中直接创建的对象,但各种类型都可以作为key,例如

myDict = {threading.current_thread(): 100}
print(myDict[threading.current_thread()])#100

和list相比,dict查找/插入速度快,不会随着key的增加而变慢;但需要占用大量内存。

myDict = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
myDict1 = dict('Michael'=95, 'Bob'=75, 'Tracy'=85)
print(myDict == myDict1 )#True

无法获取key不存在的字典值,可通过in.get()方法进行判断

'tk' in myDict
myDict['Thomas']
myDict.get('Thomas')
myDict.get('Thomas', -1)#设置默认值

4. set 集合

无序且不会有重复元素,只能以intstr等不可变对象作为键

s = set([1, 2, 3])
s = {1,2,3}
  • 可通过.add()新增元素,.remove()删除元素
  • 两个set可通过&取交集,|取并集
  • 无法被切片或索引

比较

==类似js的==
is类似js的===

条件判断

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
else:
    <执行3>
  • 条件判断语句如为非布尔值,非零数值、非空字符串、非空list等视为True,否则为False
    其他情况下的语句不能支持隐式转换,如"5"+10
  • not 同js中的!
if not 50>100:
    pass

循环

for循环

for item in list:
    pass
for index,item in enumerate(list):
    pass
  • enumerate
    把传入的list以(index,item)的形式打包成一个个元组,然后返回由这些元组组成的对象。可以使用 list() 转换enumerate对象以输出列表。
>>>list(enumerate(['a','b']))
[(0,'a'),(1,'b')]

推导式(列表解析式、字典解析式、集合解析式)

书写方便,且执行效率远远高于通过循环生成列表/字典/集合
注意元组没有解析式,当使用()时会生成generator

l = [i+1 for i in range(1,11) if i<5]
#[2, 3, 4, 5]

d = {i: j.upper() for i, j in zip(range(1, 3), 'abc')}
#{1: 'A', 2: 'B', 3: 'C'}

s = {x * x for x in range(10)}
#{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
  • zip
    把传入的参数打包成一个个元组,然后返回由这些元组组成的对象,以节约内存。可以使用 list() 转换zip对象以输出列表。
>>>list(zip(range(1, 3), 'abc'))
[(1,''a'),(2,'b'),(3,'c')]

while循环

while <条件语句>:
    pass

break

退出循环

continue

提前结束本轮循环,直接开始下一轮循环

函数

def 函数名(参数):
  <函数体>
  • pass
    占位符,防止 条件执行/循环执行/函数体/类 为空时报错
    本身没有作用,不会影响后续代码执行
  • 默认return None返回值为tuple时可省略括号
参数

对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

  • 函数的参数可以设置默认值
    默认参数必须指向不变对象,否则每次调用都会指向上次调用结束时的默认值
  • 位置参数(必选参数)
    普通的参数称为位置参数,不可多传也不可少传(除非设置了默认值)
  • 可变参数 *
    类似ES6的...,自动将所有参数组装为一个tuple
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
calc(1, 2)#5
calc(*[1,2])#5
calc(*(1,2))#5
calc()#0
  • 关键字参数 **
    自动将含参数名的参数组装为一个dict
def person(name, age, **kw):
    return name, age, kw
print(person('Adam', 45, gender='M', job='Engineer'))
print(person('Adam', 45, **{'gender':'M', 'job':'Engineer'}))
#(Adam , 45 , {'gender': 'M', 'job': 'Engineer'})
  • 命名关键字参数
    通过分隔符**后面的参数被视为命名关键字参数。
    类似位置参数,不可多传也不可少传(除非设置了默认值),区别在于必须传入参数名而非通过位置传入
def person(name, age, *, city, job):
    print(name, age, city, job)
person('Jack', 24, city='Beijing', job='Engineer')
#Jack 24 Beijing Engineer
  • 参数组合
    必须按照 必选参数、默认参数、可变参数/命名关键字参数、关键字参数 的顺序定义参数
def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
f1('aa','bb','cc','dd',args1=1,args2=2)
#a = aa b = bb c = cc args = ('dd',) kw = {'args1': 1, 'args2': 2}

相关文章

网友评论

      本文标题:Python 基础

      本文链接:https://www.haomeiwen.com/subject/xebrsxtx.html