美文网首页
Python 特性语法总结

Python 特性语法总结

作者: 天凉玩个锤子 | 来源:发表于2019-12-10 12:41 被阅读0次

Python 特性语法总结

成员运算符

运算符 描述
in 在指定的序列中找到值,返回True;否则返回False
not in 相反
a = 10
list = [1,2,3,4,5]
if (a in list):
  print(a)
if (a not in list):
  print(0)

身份运算符

运算符 描述
is x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not 相反

is 与 == 区别:
is用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

字符串格式化

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

//我叫 小明 今年 10 岁!

主要使用format()格式化函数

print("name:{a},addr{b}".format(a='haha',b='home')

format()用法详解

数据结构

1.列表

  • del关键字
    del list[0]
    del list

  • 函数

操作 含义
max(list) / min(list) 返回最值
list(seq) 将元组转换为列表
cmp(list1,list2) 比较两个列表的元素
len(list) 长度
  • 脚本操作符
操作 含义
+ 组合
* 重复
in 元素是否存在于列表中
  • 方法
操作 含义
list.append(obj) 末尾添加
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 用新列表扩展原来的列表
list.index(obj) 第一个匹配项的索引位置
list.insert(index, obj) 将对象插入列表
list.pop([index = -1]) 默认移除最后一个元素并返回元素值
list.remove(obj) 移除第一个匹配项
list.reverse() 元素反向
list.sort(cmp=None, key=None, reverse=False) 根据规则排序

2. 元组

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2
print tup3

#输出(12, 34.56, 'abc', 'xyz')

del不允许删除元组中的元素,但是可以删除整个元组

内置函数

  • cmp(tuple1,tuple2)
  • len(tuple)
  • max(tuple) / min(tuple)
  • tuple(seq) 将列表转换为元组

3. 字典

字典是另一种可变容器模型,且可存储任意类型对象。

  • 键唯一,值不需要唯一
  • 若同一个键出现两次,则后一个值被记住
  • 键不可变,因此不可以用列表作为键
操作dict 含义
del dict['a'] 删除键是'a'的条目
dict.clear() 清空字典条目
del dict 删除字典
cmp(dict1,dict2) 比较
len(dict) 计算字典元素个数,键数
str(dict) 返回字典的字符串表示,方便打印
dict.has_key(key) 如果键在字典dict里返回true,否则返回false
dict.items() 以列表返回可遍历的(键,值)元组数组
dict.keys() 以列表返回所有键
dict.values() 以列表返回字典中所有值
dict.update(dict1) 把另一个字典dict1的键值对更新到dict里
dict.pop(key[,default]) 删除键值对,并弹出key对应的值,不给key则返回default值
dict.popitem() 返回并删除字典中最后一对键值(元组)

遍历技巧

  • 字典遍历同时解读键和值:items()
dic = {'keya':'valuea', 'keyb':'valueb'}
for k,v in dic.items():
  print(k,v)

"""
输出
keya valuea
keyb valueb
"""
  • 列表遍历同时得到索引位置和对应值:enumerate()
for i, v in enumerate(['a', 'b', 'c']):
  print(i,v)
"""
输出
0 a
1 b
2 c
"""
  • 同时遍历两个及以上列表:zip()
list1 = ['a1', 'b1', 'c1']
list2 = ['a2', 'b2', 'c2']
for x, y in zip(list1, list2):
  print('list1 {0} and list2 {1}'.format(list1,list2)

"""
输出
list1 a1 and list2 a2
list1 b1 and list2 b2
list1 c1 and list2 c2
"""
  • 反序遍历:reversed()
for i in reversed(range(1,10,2)):
  print(i)
"""
输出
9
7
5
3
1
"""

函数传参

可变对象与不可变对象

python中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

不定长参数

一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。

  • 加了*号的参数会以元组(tuple)的形式导入(可以不传递未命名的变量导入空元组),存放所有未命名的变量参数。
    注意:定义函数时参数前加*,若是在调用函数时参数前加*有解包裹的效果
    https://www.cnblogs.com/bingabcd/p/6671368.html
  • 带两个星号**的参数会以字典的形式导入。
  • 注意区别参数表中单独出现的*,作用是其后的参数必须用关键字传入

匿名函数lambda

lambda只是一个表达式,函数体比def简单很多。
语法:
lambda [arg1 [,arg2,……,argn]]:expression
demo

sum = lambda arg1, arg2: arg1 + arg2
#调用
print(sum(1,2))
#输出
#3

迭代器与生成器

迭代是python访问集合元素的一种方式。

  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器只能往前不会后退。
  • 两个基本方法 iter()next()
  • 字符串、列表、元组对象都可用于创建迭代器

迭代器

  • 由列表创建迭代器对象(导入sys模块)
#!/usr/bin/python3
 
import sys         # 引入 sys 模块
 
list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
 
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

#输出结果
#1
#2
#3
#4
  • 把类作为迭代器使用
    需要在类中实现两个方法
    1.__iter__()
    返回一个迭代器对象,这个对象实现了__next()__方法并通过StopIteration异常标识迭代的完成。
    2.__next__()
    返回下一个迭代器对象

实例:创建一个返回数字的迭代器,初始值为1,逐步增1

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

#输出结果
#1
#2
#3
#4
#5

StopIteration

在20次迭代后停止执行

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in myiter:
  print(x)

#输出1到20

生成器 yield

使用了yield的函数被称为生成器(generator)。

  • 此类函数返回的是迭代器,只能用于迭代操作。
  • 每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下次执行next()方法时从当前位置继续运行。
    实例:使用yield实现斐波那契数列
#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

#输出结果
#0 1 1 2 3 5 8 13 21 34 55

模块

命令行中参数的使用

使用模块: sys

import sys
for i in sys.argv:
  print(i)
  • sys.argv 是一个包含命令行参数的列表
  • sys.path 包含了一个Python解释器自动查找所需模块的路径的列表。

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被以引入时,模块中的某一程序块不执行,可以使用__name__属性。

__name__属性使该程序块仅在该模块自身运行时执行。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

输出
$ python using_name.py
程序自身在运行

$ python
>>> import using_name
我来自另一模块
>>>

输入和输出

repr()

产生一个解释器易读的表达式

#  repr() 函数可以转义字符串中的特殊字符
hello = 'hello, runoob\n'
hellos = repr(hello)
print(hellos)

输出
'hello, runoob\n'

# repr() 的参数可以是 Python 的任何对象
repr((x, y, ('Google', 'Runoob')))

返回
"(32.5, 40000, ('Google', 'Runoob'))"

关于字符串对象的格式化方法

  • string.rjust(num) 字符串靠右,左边填充num个空格
for x in range(1,11):
  print(repr(x).rjust(2), repr(x*x).rjust(3))


for x in range(1, 11):
  print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))

输出
1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
  • string.ljust()/center()
  • string.zfill(num)在数字的左边填充num个0

读和写文件

  • open()
    基本语法open(filename, mode)
    mode:决定了文件的打开模式,非强制,默认为只读(r)。


    f = open("1.txt")
  • f.read(size)
    size:读取数目,可选参数,空则读取并返回所有内容。

  • f.readline()
    从文件中读取单独的一行。换行符为'\n'。若返回一个空字符串则说明已读取到最后一行。

  • f.readlines()
    返回文件中包含的所有行。
    如果设置可选参数sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

  • f.write()
    f.write(string) 将 string(字符串类型) 写入到文件中, 然后返回写入的字符数。

  • f.tell()
    返回文件对象当前所处的位置,它是从文件开头开始算起的字节数。

  • f.seek()
    改变文件当前的位置
    seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    seek(x,1) : 表示从当前位置往后移动x个字符
    seek(-x,2):表示从文件的结尾往前移动x个字符

  • f.close()
    关闭文件并释放系统的资源。

当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:

with open('/tmp/foo.txt', 'r') as f:
     read_data = f.read()
f.closed
True

相关文章

  • Python 特性语法总结

    Python 特性语法总结 成员运算符 运算符描述in在指定的序列中找到值,返回True;否则返回Falsenot...

  • Python——控制语句和语法规则

    if语句 Python if语句是选取要执行的操作。 通用格式 Python语法规则 Python语法特性 语句是...

  • python学习总结

    python基础语法总结 参考:Python基础语法总结 参考:1.Python标识符 在 Python 里,标识...

  • 关于swift调研报告

    一丶 语言特性以及发布历史特性:Swift 语法内容混合了OC,JS,Python,语法简单,使用方便,并可与OC...

  • Python 数据类型

    Python 介绍 Python 特性 1、python 语法简单,容易理解,容易学习 2、跨平台,可在windo...

  • Python特性概要

    一、python特性概要1、python是解释型语言,我们和c对比一下2、python特性总结:字节码,动态,缩进...

  • python进阶总纲

    对python的进阶,我想分为三个部分来总结: 1 语法 主要是对python语法的高阶使用总结,包括常用的库和p...

  • 年薪40W大佬Python学习笔记-《think Python》

    引言 之前使用过python进行编程,但是没有系统的学习过python的语法及其特性,计划从think Pytho...

  • Python 最新官方中文文档 PDF

    文档解释了 Python 3.9 相比 3.8 的新增特性。本参考手册描述了 Python 的语法和核心语义。本参...

  • Python 面试题

    面试题总结-Python Python语言特性[http://fm126.top/article/29#pytho...

网友评论

      本文标题:Python 特性语法总结

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