Python基础学习

标识符

  • 区分大小写
  • 字母、数字、下划线
  • 数字不能作为开头
  • 不能使用关键字
  • 不能使用内置函数

变量

动态类型——变量的类型可以变化

注释

#这是一句注释

模块

访问对应模块的变量

import 模块

print(模块.模块变量)

直接访问对应模块的变量

from 模块import 模块变量

print(模块变量)

直接访问对应模块的变量并取别名

from 模块 import 模块变量 as 别名
print 别名

数据类型

内置类型

  1. 数字
  2. 字符串
  3. 列表
  4. 元组
  5. 集合
  6. 字典

数字类型

整数类型

  • type()函数返回对应的数字类型
  • 二进制以0b开头
  • 八进制以0o开头
  • 十进制以0x开头

浮点类型

  • e表示10,后面的值表示e的次幂

复数类型

  • 实部与虚部结合——1+1i
  • (1+1i)+(1+1i)=2+2i
  • 类型为complex

布尔类型

  • 只有True和False两种情况
  • 非零可转换为True——bool(1)
  • 空串为False——bool(‘’)
  • 非空为True——bool(‘ ‘),即使是空格

隐式数字类型相互转换

布尔转换为整数

a = 1+True
print(a)

整数转化为浮点

a = 1.0+1
print(a)

布尔转换为浮点

a = 1.0+True
print(a)

显式数字类型转换

浮点转整数

a = int(1.0)+1
print(a)

布尔转整数

a = int(True)
print(a)

浮点转整数

a = int(0.9)
print(a)

整数转小数

a = float(1)
print(a)

布尔转小数

a = float(True)
print(a)

算术运算符

加减乘除余

a**b        a的b次幂

a//b        小于a/b的最大整数

比较运算符

==  等于

!=    不等于

>     大于

<     小于

>=  大于等于

<=  小于等于

逻辑运算符

not  非

and 于

or    或

位运算符

~     按位取反

&    按位取与

|      按位取或

^     按异取位或

>>  右移

<<  左移

if结构

a=int(input("请输入:"))
if a < 0:
    print("小于0")
elif a > 0:
    print("大于0")
else:
    print("等于0")

运行结果:
请输入:0
等于0

while循环

a = 0
while a < 100:
    a += 1
    print(a)

for循环

for a in range(10):
    a += 1
    print(a)
else:
    print("无了")

跳转语句

break     跳出循环

continue 跳出一次循环

return     返回

序列

概念

  • 可迭代、有序
  • 下标从0开始
  • 正负值索引

H

E

L

L

O

0

1

2

3

4

-1

-2

-3

-4

-5

  • a[0]=’H’   a[-1]=’H’
  • max(a)    ->     ‘O‘         
  • min(a)     ->     ‘H’         
  • len(a)      ->      5

计算

  • a*=2                   ->       ‘HELLOHELLO’
  • a+=’WORLD’     ->       ‘HELLOWORLD’

切片

  • a[1:3]      ->   ‘EL’
  • a[:3]        ->   ‘HEL’
  • a[0:]        ->   ‘HELLO’
  • a[:]          ->   ‘HELLO’
  • a[1:-1]     ->   ‘ELL’              掐头去尾

成员测试——存在判断

‘E’ in a          ->     True

‘e’ not in a     ->     True

list列表

  • 类型可变
  • 可进行追加、插入、删除、替换操作

创建列表

  • list创建方式         list('hello')
  • 类Java数组创建方式   [1,2,3,4]

追加元素

  • 单个元素      a.append(5)
  • 多个元素      a += [1,2]
  • 多个元素      a.extend([1,2])

插入元素

  • 在下标为2的地方插入55     a.insert(2,55)

元素替换

  • 将下标为2的位置替换成10   a[2] = 10

元素删除

  • 删除第一个为10的元素      a.remove(10)

tuple元组

性质

  • 不可变序列类型

创建

  • a = 1,2,3,4
  • a = (‘a’,’b’)
  • a = (‘a’,’b’,1,2)
  • tuple([1,2,3,4,5])
  • tuple(‘hello’)            ->  ('h', 'e', 'l', 'l', 'o')

元组拆包

  • a,b = ('张三',100)    ->  张三 100

set集合

概念

  • 可迭代
  • 无序
  • 不可重复

创建

a = set('hello')

a = {1,1,2,2,3,3}

修改

添加

a.add('张三')

删除

a.remove(1)

清空

a.clear()

dick字典

概念

  • 可迭代
  • 键值对
  • 不可重复

创建

  • 普通键值对方式
    a = {1: "张三"}, {2: "李四"}
  • 打包为元组,dick函数通过元组进行创建字典
a = dict(((1, 'a'), (2, 'b'), (3, 'c')))
  • 打包为元组,dick函数通过列表进行创建字典
a = dict([(1,'a'),(2,'b'),(3,'c')])
  • 列表通过zip打包为元组,通过列表进行创建字典
a = dict(zip([1,2,3],['a','b','c']))

查询

查询单个

a['key']

查询全部信息

a.items()

查询key

a.keys()

查询value

a.values()

修改

a['key'] = 4

删除

a.pop('key')        

字符串

转义符

Tab		\t
换行	\n
回车	\r
双引	\”
单引	\’
反斜杠	\\

转换

字符转数字

a = int('888')

数字转字符

a = str(888)

占位符

a = 'i*i={}'.format(10)
b = '{0}+{0}+{1}+{1}'.format(1, 2)

格式化控制符

使用

{1:d}

s

字符串

d

十进制整数

F,f

十进制浮点

G,g

十进制数

E,e

科学计数法浮点数

o

八进制整数

X,x

十六进制整数

例子

a = '我今年{0:d}岁'.format(20)

字符串操作

查找

字符串.find(哪个字符,(开始),(结束))

替换

字符串.replace(old,new,(要换的个数,不填默认all))

字符串分割

字符串.split(按此切割,(切割多少次,默认all))

函数

定义函数

概念

  • 函数有函数名、参数、返回值
  • 类外定义,作用域在此类中
  • 嵌套函数:函数中定义
  • 方法:在类中定义

结构

       def 函数名(形式参数列表)

              函数体

              return 返回值

例子

def area(width, height):
    s = width * height
    return s

调用函数

  • 根据位置调用
area(2, 2)
  • 根据名字调用
area(height=5, width=10)

参数的默认值

注意:不能只设置其中一个

def area(width=5, height=5):
    s = width * height
    return s

可变函数

基于元组的可变字符串

def adds(*nums):
    add = 0
    for num in nums:
        add += num
    return add


print(adds(2, 2, 3, 5, 3, 5))

基于字典的可变字符串

def adds(**nums):
    for key, value in nums.items():
        print('{0}:{1}'.format(key, value))


adds(a='1', b='2', c='3')

函数变量的作用域

就近原则

作用域改成全局

global a

函数的类型

概念

  • 函数类型function
  • 函数可作为另一个函数的返回值
  • 函数可作为另一个函数的参数

过滤函数——filter

根据方法返回条件,对数据进行过滤操作

def f(x):
    return x > 50


data = [10, 20, 30, 40, 50, 60, 70, 80, 90]
filtered = filter(f, data)
print(list(filtered))

映射函数——map

根据方法返回,对数据进行改变

def f(x):
    return x * 2


data = [10, 20, 30, 40, 50, 60, 70, 80, 90]
mapped = map(f, data)
print(list(mapped))

lambda函数

def calc(opr):
    if opr == '+':
        return lambda a, b: (a + b)
    else:
        return lambda a, b: (a - b)


print(calc('+')(10, 10))

面向对象

创建类

结构

class 类名(父类):
    类体

例子

class myFistClass:
    pass

创建对象

class myFistClass:
    pass


myclass = myFistClass()

类的成员

  • 成员变量
    • 实例变量
      class Student:
          def __init__(self, name, age):
              self.name = name
              self.age = age
      
      
      xiaoming = Student('小明', 18)
      print('{0}今年{1}岁'.format(xiaoming.name,xiaoming.age))
      
    • 类变量
      • 在类中,方法外面定义的变量,不属于对象的变量
  • 构造方法
    __init__()用于创建和初始化实例变量
    class Student:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    xiaoming = Student('小明', 18)
    zhangsan = Student('张三',20)
  • 成员方法
    • 实例方法
      class Student:
          def __init__(self, name, age):
              self.name = name
              self.age = age
              return
      
          def homework(self):
              return print("{}在做作业".format(self.name))
      
          def work(self, num):
              return print("{}做了{}份作业".format(self.name, num))
    • 类方法
      class Student:
          # 类变量
          number = 100
      
          # 类方法
          @classmethod
          def numbers(cls,num):
              return cls.number+num
      
      Student.numbers(5)

  • 属性
        def __init__(self, name, age):
            self.name = name
            self.age = age
            return
    
        def get_name(self):
            return self.name
    
        def set_name(self, name):
            return self.name
        def __init__(self, name, age):
            self.name = name
            self.age = age
            return
    
        @property
        def name(self):
            return self.name
    
        @name.setter
        def name(self, name):
            self.name = name
    

封装

私有变量

下划线开头的就是私有变量

_number = 100

私有方法

下划线开头的方法就是私有方法

    def __init__():

继承

class Animal:
    def __init__(self, name):
        self.name = name
        return

    def show_info(self):
        return "动物的名字{}".format(self.name)


class Cat(Animal):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age
        return

 多继承

class Water:
    def __init__(self, account):
        self.account = account
        return

    def show_info(self):
        return "有{}千克水".format(10)


class Light:
    def __init__(self, account):
        self.account = account
        return

    def shou_info(self):
        return "有{}小时的光照".format(10)


class Plant(Water, Light):
    def __init__(self, name):
        super().__init__(10)
        self.name = name
        return

异常

异常捕获

结构

except可加多个来处理不同的异常

except方法内页可以传入多个异常来进行处理

try:
    可能有异常的语句
except(异常类型):
    处理异常

例子

try:
    1 / 0
except:
    print("错误")

finally

最终的

结构

try:
except :
finally:

自定义异常

class MyException(Exception):
    def __init__(self,message):
        super().__init__(message)

手动引发异常

用raise来触发异常

try:
    a = 1
except:
    raise print("错误")

math

数学计算

ceil(x)大于等于x的最小整数
floor(x)小于等于x的最大整数
sqrt(x)x的平方根
pow(x,y)x的y次幂
log(x[,base])base为底的对数,省略base则是x的自然对数
sin(x)弧度x的三角正弦
degrees(x)弧度x转为角度
radians(x)角度x转弧度

时间

datetime时间和日期
data日期
time时间
timedelta计算时间跨度
tzinfo时区信息

 datetime

参数

year
month[1,12]
day[1~当月最大]
hour时(省略)[0,24)
minute分(省略)[0,60)
second秒(省略)[0,60)
microsecond微秒(省略)[0,1000000)
tzinfo时区

例子

import datetime

d = datetime.datetime(2020, 2, 10)

 常用方法

  • 返回当前本地日期和时间
    datetime.datetime.today()
  • 返回指定时区的日期和时间
    datetime.datetime.now()
  • 从1970.1.1开始计算的秒数
    datetime.datetime.fromtimestamp(99999999)

 date

参数

year
month[1,12]
day[1~当月最大]

 方法

  • 返回当前日期
    d = datetime.date.today()
  • 从1970.1.1开始计算的秒数
    d = datetime.date.fromtimestamp(999999999)

 time

参数

hour时(省略)[0,24)
minute分(省略)[0,60)
second秒(省略)[0,60)
microsecond微秒(省略)[0,1000000)
tzinfo时区

 timedelta

参数

days
seconds
microseconds微秒
milliseconds毫秒
minutes分钟
hours小时
weeks

用法

d = datetime.date.today()
d += datetime.timedelta(10)

类型转换

  • 日期转字符
    d.strftime('%Y-%m-%d %H:%M:%S')
  • 字符转日期
    datetime.datetime.strftime(d, '%Y-%m-%d %H:%M:%S')

正则表达式

字符串匹配

import re

a = r'\w+@a\.com'
b = 'abc123@a.com'
c = re.match(a, b)
print(c)

字符串查找

返回查找的第一个

re.search(a, b)

返回所有查找的列表

re.findall(a, b)

字符串替换

# 字符串替换
p = r'\d+' # 匹配数字
text = 'as12das56f1253f4qw'
r_text = re.sub(p, '', text)
print(r_text)

r_text = re.sub(p, '', text, count=1)
print(r_text)

r_text = re.sub(p, '', text, count=2)
print(r_text)

字符串分割
 

p = r'\d+'
text = 'as12das56f1253f4qw'
splited = re.split(p,text)
print(splited)

文件操作

打开文件

参数

open(file,mode='r',encoding=None,errors=None)

file:file参数用于表示要打开的文件,可以是字符串或整数

mode:用于设置文件打开模式

  • t:文本方式
  • b:二进制
  • r:只读
  • w:只写;文件不存在,创建文件;文件存在就覆盖文件
  • x:独占模式打开文件,文件不存在,调用w,文件存在引发FileExistsError异常
  • a:追加模式,文件不存在创建文件,文件存在末尾追加
  • +:更新模式,需与r、w、a组合使用

encoding:用来指定打开文件时的文件编码,默认编码是UTF-8编码,主要用于打开文本文件。

errors:用来指定在文本文件发生编码错误时如何处理。推荐errors参数的取值为'ignore',表示在遇到编码错误忽略错误,程序继续执行。

关闭文件

close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值