Python3 学习笔记

2018-08-01  本文已影响0人  FlyingLittlePG

写在前面的话

代码中的# > 表示的是输出结果

输入

str = input('请输入内容:')
print(str)
#>>    此时控制台上打印的一定是你输入的字符串
num = input('请输入数字:')
print(type(num))
#    >>    <class 'str'>
#此时可以看见,就算输入数字类型的变量,num接收的值依然是一个字符串类型
num = int(num)   #强制转换为int类型
print(type(num))
#    >>     <class 'int'>
#此时控制台返回的是num变量的类型,可以看到,类型已经是int了

输出

#常用用法
print('Hello World!')
# 自定义用法
print(value,sep = ' ',end = '\n')
value表示需要打印的值
sep表示打印多个值之间的分隔符,默认是一个空格
end表示打印结束后的分隔符,默认是\n

变量、函数、类命名规则

常用操作

变量进行赋值

a = 5
b = 'hh'
a , b = 5 , 'hh' 
a , b = 5 , 10

#如果遇到JAVA程序员,会这样写
int temp = a 
a = b
b = temp

#但是在python中,只需要进行简单交换即可
a , b = b , a
#通过这种方式就完成了两个变量值的交换

变量的类型

数字型(number)

字符串型(string)

a = 'Jack'
b = "Jack"
c = "Bob,'haha',Jack"
print(c)

#其结果为Bob,'haha',Jack
n = '我是XX'
print('你好,%s'%n)
n = '我是XX'
print('你好,{0}'.format(n))
#还可以这么使用
age = 18
name = 'Bob'
print('我是{0},我今年{1}岁,你也{1}岁'.format(name,age))
   ```
   print(r'\\')
   #打印出的为\\
   
   print('\\\\')
   #这样也可以打印出\\
   ```

列表(list)

元组(tuple)

字典(dict)

集合(set)

运算符

算数运算符

比较运算符

赋值运算符

逻辑运算符

成员运算符

身份运算符

运算符的优先级

程序结构

顺序结构

分支、判断结构

循环结构

函数

定义函数

调用,传入函数

函数的参数

函数的返回值

函数文档

高阶函数

返回函数

匿名函数

#将每个元素的前面加上hello
list = ['jack','bob','luce','alice']
l = map(lambda x:'hello'+x,list)
for i in l:
  print(i)

# > hellojack
# > hellobob
# > helloluce
# > helloalice

偏函数

  #假设,我们有'jack','bob','luce','alice',这4个人,他们的年龄都是24岁
  # 此时有一个函数say,是为了介绍自己,需要传入name和age两个参数
  # 希望在不改变say函数的情况下,简化操作,此时我们就可以使用偏函数了
  
  import functools
  
  list = ['jack','bob','luce','alice']
  
  def say(name,age):
      print('My name is {0},age is {1}'.format(name,age))
  
  say24 = functools.partial(say,age = 24)
  
  for person in list:
      say24(person)
  
  # > My name is jack,age is 24
  # > My name is bob,age is 24
  # > My name is luce,age is 24
  # > My name is alice,age is 24
  

递归函数

  #遍历一个盘符下的所有文件(包括子文件夹、文件)
  
  import os

  def getFile(path):
      try:
          filelist = os.listdir(path) #得到该文件夹下的所有文件
          for file in filelist:
              file = os.path.join(path,file) #将文件名和路径结合起来
              if os.path.isdir(file):
                  getFile(file)  #在这里如果判断一个文件是文件夹,那么就会再次调用自己
              else:
                  print(file)
      except:
          print('出错,跳过')
  
  getFile(r'd:/')

装饰器

高级特性

切片 slice

  list = [1,2,3,4,5,6,7,8,9,10]
  
  #挑选出所有奇数
  print(list[:9:2])
  # > [1, 3, 5, 7, 9]
  
  #取前4个数
  print(list[:4])
  # > [1, 2, 3, 4]
  
  #取后2个数
  print(list[-2:])
  # > [9, 10]
  
  #取3~7
  print(list[2:7])
  # > [3, 4, 5, 6, 7]

迭代

列表生成式

generator生成器

思想

类和对象

定义类

  class Person(object):
      
      #定义属性
      name = 'NoName'
      age = 0
     
      #定义函数
      def say(self):
          print('say')
      def eat(self):
          print('eat')
      def sleep():
          print('sleep')

面向对象

类的实例化

访问类

类的函数

属性和函数的动态绑定

抽象类

import abc

class Man(metaclass= abc.ABCMeta):
   
    @abc.abstractmethod
    def say(self):
        pass

    @abc.abstractmethod
    def eat(self):
        pass


class Person(Man):
'''
    def say(self):
        pass
    def eat(self):
        pass
'''
  pass
p = Person()


# > TypeError: Can't instantiate abstract class Person with abstract methods eat, say
#如果子类中不定义抽象方法就会报错

异常

常用模块

calendar 日历模块

import calendar

c = calendar.calendar(2018)
print(c)

                                  2018

   January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
1  2  3  4  5  6  7                1  2  3  4                1  2  3  4
8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11
15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18
22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25
29 30 31                  26 27 28                  26 27 28 29 30 31

    April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1          1  2  3  4  5  6                   1  2  3
2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10
9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17
16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24
23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30
30

     July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1             1  2  3  4  5                      1  2
2  3  4  5  6  7  8       6  7  8  9 10 11 12       3  4  5  6  7  8  9
9 10 11 12 13 14 15      13 14 15 16 17 18 19      10 11 12 13 14 15 16
16 17 18 19 20 21 22      20 21 22 23 24 25 26      17 18 19 20 21 22 23
23 24 25 26 27 28 29      27 28 29 30 31            24 25 26 27 28 29 30
30 31

   October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
1  2  3  4  5  6  7                1  2  3  4                      1  2
8  9 10 11 12 13 14       5  6  7  8  9 10 11       3  4  5  6  7  8  9
15 16 17 18 19 20 21      12 13 14 15 16 17 18      10 11 12 13 14 15 16
22 23 24 25 26 27 28      19 20 21 22 23 24 25      17 18 19 20 21 22 23
29 30 31                  26 27 28 29 30            24 25 26 27 28 29 30
                                                 31


 print(calendar.isleap(2018))   
    
 # > False
 
 print(calendar.leapdays(1990,2018))
 
 # > 7
 
 m = calendar.month(2018,8)
 print(m)
 
 # >     August 2018
     Mo Tu We Th Fr Sa Su
            1  2  3  4  5
      6  7  8  9 10 11 12
     13 14 15 16 17 18 19
     20 21 22 23 24 25 26
     27 28 29 30 31
 
 week,day = calendar.monthrange(2018,8)
 print(week)
 print(day)
 
 # > 2
 # > 31
 
 
 list = calendar.monthcalendar(2018,8)
 for i in list:
     print(i)
     
 # > [0, 0, 1, 2, 3, 4, 5]
 # > [6, 7, 8, 9, 10, 11, 12]
 # > [13, 14, 15, 16, 17, 18, 19]
 # > [20, 21, 22, 23, 24, 25, 26]
 # > [27, 28, 29, 30, 31, 0, 0]
 
 print(calendar.weekday(2018,8,7))
 
 # > 1
 

time 时间模块

datetime 理想的日期和时间模块

timeit 代码时间测试模块

os 系统操作模块

shutil 文件操作模块

collections 模块

pickle 持久化模块

shelve 持久化模块

import shelve

file = r'C:\Users\wudi.HAPMMAGNA\Desktop\a'

sv = shelve.open(file,writeback= True)

sv['one'] = 1
sv['two'] = 2
sv['three'] = 3

sv.close()

# 此时桌面上出现了三个文件,为a.dat、a.bak、a.dir
import shelve

file = r'C:\Users\wudi.HAPMMAGNA\Desktop\a'

sv = shelve.open(file)

print(sv['one'])

sv.close()

# > 1

IO文件模块

logging 日志模块

queue 同步队列模块

import queue

que = queue.Queue()
for i in range(1,11):
    que.put(i)

print(que.get())

# > 1

print(que.empty())

# > False

threading 多线程模块

多进程

迭代器 Iterator

生成器

协程

import time

def Producer():
    num = 0
    while True:
        num += 1
        print('生产者:总产品为%s'%num)
        num = yield num
        time.sleep(0.5)


def Consumer():
    num = 0
    while True:
        num = yield num
        num -= 1
        print('消费者:总产品为%s'%num)
        time.sleep(0.5)

p = Producer()
c = Consumer()
num = next(p)
next(c)
while True:
    num = c.send(num)
    num = p.send(num)

结构化文件储存

# 利用etree创建一个xml文件
import xml.etree.ElementTree

root = xml.etree.ElementTree.Element('Root')

name = xml.etree.ElementTree.SubElement(root,'Name')
name.text = 'Jack'

age = xml.etree.ElementTree.SubElement(root,'Age')
age.text = '22'

tree = xml.etree.ElementTree.ElementTree(root)

tree.write('a.xml')

import json

data = {
    'name':'jack',
    'age':18,
    'sex':'male'
}

# 写入json文件
with open('a.json','w')as f:
    json.dump(data,f)

#读取json文件
with open('a.json','r')as f:
    data = json.load(f)
print(type(data))
print(data)

# > <class 'dict'>
# > {'name': 'jack', 'age': 18, 'sex': 'male'}

re 正则表达式模块

上一篇 下一篇

猜你喜欢

热点阅读