Python 特性语法总结

2019-12-10  本文已影响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.列表

操作 含义
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不允许删除元组中的元素,但是可以删除整个元组

内置函数

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() 返回并删除字典中最后一对键值(元组)

遍历技巧

dic = {'keya':'valuea', 'keyb':'valueb'}
for k,v in dic.items():
  print(k,v)

"""
输出
keya valuea
keyb valueb
"""
for i, v in enumerate(['a', 'b', 'c']):
  print(i,v)
"""
输出
0 a
1 b
2 c
"""
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
"""
for i in reversed(range(1,10,2)):
  print(i)
"""
输出
9
7
5
3
1
"""

函数传参

可变对象与不可变对象

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

不定长参数

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

匿名函数lambda

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

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

迭代器与生成器

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

迭代器

#!/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,逐步增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)。

#!/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'))"

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

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

读和写文件

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

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

猜你喜欢

热点阅读