Python语言基础

声明文件字符集

# -*- coding: cp-1252 -*-

数的表示方法

100 # 十进制

0xff00 # 16进制

1.23 # 浮点数

1.23e10 # 浮点数科学计数法

数学计算

加减乘除取余与其他语言相同

17//3 #不要余数的除法

5**2 #幂运算

2 & 3 #二进制按位与

2 | 3 #二进制按位或

2 ^ 3 #二进制按位异或

2 ~ 3 #二进制按位取反

1 << 10 #二进制左移——1024

1024 >> 2 #二进制右移——256

逻辑运算采用and or not表示

成员运算in not in

身份运算(判断引用)is is not

运算优先级:
** ~ +@ -@ * / % // + - >> << & ^ | <= < > >= == != = %= /= //= -= += *= **= is is not in not in not or and

数学函数(import math

abs(x) #绝对值
ceil(x) #向上取整
floor(x) #向下取整
cmp(x, y) #比较,返回-1,0,1
exp(x) #e的n次幂
fabs(x) #数值绝对值
log(x) #对数
log10(x) #含基数对数
max(x1, x2,...) #最大值
min(x1, x2,...) #最小值
modf(x) 分别返回整数部分和小数部分
pow(x, y) 幂运算
round(x [,n]) 四舍五入
sqrt(x) 平方根
三角函数:acos(x) asin(x) atan(x) atan2(y, x) cos(x) hypot(x, y) # 欧几里得范数 sin(x) tan(x) degrees(x) #弧度转角度 radians(x) #角度转弧度

常量:pi e

随机函数:
choice(seq) #随机选取
randrange ([start,] stop [,step]) #指定范围随机数
random() #0-1随机数
seed([x]) #自定义生成器
shuffle(lst) #序列随机排列
uniform(x, y) #随机x-y实数

条件&循环

python的else if写作elif

python不支持switch

while x>0:

for x in range(10):

break中断整个循环

continue跳过当前循环

pass仅仅用于占位

字符串

单双引号可互相嵌套

*可以重复输出字符串串

r无转移字符串

ord(str) chr(num) 字符整数相互转化

b'adad' bytes类型数据

decode('utf-8',errors='ignore') 解码相应字符串

可以通过数组方法索引,可以切片,可以使用成员运算符

格式化字符串: %d #十进制 %f #浮点数 %s #字符串 %x #十六进制 %o #八进制

'%d%s'%(10,'test') #%格式化

'{0:d}{1:s}'.format(10,'test') #format格式化

'''
这是大段字符串
'''
test = 'just a test'
f'{test}'
# 模板字符串
from string import Template
Template('${test}').substitute(test='just a test')
# 模板字符串声明再实例

可迭代对象

列表类似其他语言数组,表现形式相同,可以不同类型元素

元组是小括号列表

字典类似对象,但是键可以是所有不可变对象,包括元组,字典没有顺序

集合是不重复的列表

#用已有可迭代对象构建迭代器
test_1 = iter([1,2,3])
#自定义可迭代对象
def __iter__(self):
    return self

所有可迭代对象除了元组都是可变对象

函数

#匿名函数
def test(cb):
    print(cb(2))

test(lambda x:x)

#装饰器——任何返回函数的高阶函数
def test(dec_data):
    def wrapper(function):
        def dec(*args, **kw): # 原函数会被替换
            print(args, kw)
            print(dec_data)
            return function(*args, **kw)
        return dec
    return wrapper


@test('shit')
def test2(a, b, *args, **kw): # 非关键字参数 关键字参数——被解析为dict
    print('just a test')


test2(1, 2, 3, 4,test = 3)
print(test2.__name__)

#偏函数——固定参数
from functools import partial


def test(a, b):
    if b < 5:
        print('b<5')
    if a < 5:
        print('a<5')
    
test2 = partial(test,a=1,b=6)

test2()

异步相关

# 生成器在有值的时候返回
import time


def test_1():
    time.sleep(1) # 一般用while
    yield print('success')

test_1_runner = test_1()
next(test_1_runner)

# coroutine 协程
import time
import types
import asyncio

@types.coroutine
def test_2():
    time.sleep(1)
    yield print('success')

async def test_3():
    await test_2()

asyncio.get_event_loop().run_until_complete(asyncio.wait([test_3()]))
# 协程在事件循环中执行
test_3().send(None)
# 协程直接执行

类相关

__表示不能被外部访问(私有)

__init__构造函数

(self)所有成员函数的self参数表示自引用

class Student(object):表示继承

# 继承
class Test_1:
    name = 'name'


class Test_2(Test_1):
    def __init__(self):
        print(self.name)

Test_2()

# 组合依赖注入
class Test_1:
    name = 'name'


class Test_2:
    def __init__(self, com):
        print(com().name)


Test_2(Test_1)

# 限制属性
class Test(object):
    __slots__ = ('name')

test = Test()
test.name = 1
test.func = 2

# getter setter
class Test(object):
    @property
    def test_1(self):
        return self.__test_1
    @test_1.setter
    def test_1(self,val):
        self.__test_1 = val

__str__()自定义打印显示

__repr__()交互解释器中的显示

__getitem__()数组方法访问

__getattr__()对象方法访问

__call__函数方法

# 枚举类
from enum import Enum

Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) # 类工厂写法

# 限制不重复
from enum import Enum, unique

@unique
class Weekday(Enum):
    Sun = 0 # Sun的value被设定为0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6
# 类工厂 传入类名,父类元组,属性字典
Hello = type('Hello', (object,), dict(hello=fn))
# 元类 继承type,重载__new__方法
class Test1(type):
    def __new__(cls, name, bases, attrs): # 第一个参数是当前实例
        attrs['name'] = lambda self, value: print(value)
        return type.__new__(cls, name, bases, attrs)

class Test2(metaclass=Test1):
    pass
    

错误

try抛出,except处理,finally执行完毕

凡是用print可以打印的地方,都可以用assert断言替代

def foo(s):
    n = int(s)
    assert n != 0, 'n is zero!'
    return 10 / n

logging可以输出到文件,并不会抛出错误

pdb.set_trace()设置断点


星空.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,131评论 0 13
  • 1.简介 Python是一种什么样的语言? 它是一种面向对象的解释型计算机程序设计语言。Python语...
    夕醒阅读 636评论 0 4
  • 前言 ||| 第二章 使用ArcPy编写脚本 Python支持大部分在其他语言中出现的编程结构。在本章内容中,我们...
    muyan阅读 89,993评论 10 55
  • 享誉海内外的方法学家、国际职业培训师吴甘霖在《方法总比问题多》中提出这样一个问题,对每一个人来说,当遇到问...
    c1a841adf25d阅读 527评论 0 0
  • 昨天晚上还没有到家,女儿给我打电话,说:“妈妈,你猜我数学考了多少分?” 听着她兴奋的声音,我说:“100分”。 ...
    晓菲心天地阅读 591评论 0 5