前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习笔记

Python学习笔记

作者头像
yaohong
发布2019-08-21 15:09:07
5150
发布2019-08-21 15:09:07
举报
文章被收录于专栏:姚红专栏姚红专栏

一:中文编码

1:指定编码

  python-------》#!/usr/bin/python

  shell----------》#!/bin/bash

2:中文识别

  # -*- coding: UTF-8 -*- 或 #coding=utf-8

3:多行语句

  我们使用斜杠(/)将一行语句分成多行

  如果是{},(),[]则直接可以进行换行

4.转义

\n表示换行、\t表示制表符、\\表示\、

如果有很多需要转义,则可使用r' '

代码语言:javascript
复制
 '''   '''也可以表示换行
  print('''line1
  line2
  line3''')

5:输出  

  print x,y

  print默认是换行的,如果再print末尾加个逗号“,”就回不换行

6.输入

  shell:read -p "Please enter your age: " age

python2:a = raw_input("请输入你的名字")

python3:a = input("请输入你的名字")

二:变量和简单类型

  python中数据类型分为5种:数字,字符串、列表、元组、字典

  变量命名规则:

python       shell   文件名/模块名    小写,单词用“_”分割 ----->ad_stats.py   包名         小写,单词用“_”分割   类名         单词首字母大写----->ConfigUtil   全局变量名      大写字母,单词之间用_分割 ------->COLOR_WRITE   普通变量 小写字母,单词之间用_分割 ------->this_is_a_var   实例变量 以_开头,其他和普通变量一样 ----->_instance_var   普通函数 和普通变量一样-------------------->get_name()

2.1数字

 整数:a=1

  浮点数:a=1.234

2.2字符串

  创:var1 = 'Hello World!'

  查:print "var1[0]: ", var1[0]

print "var2[1:5]: ", var2[1:5]

  改:print "更新字符串 :- ", var1[:6] + 'Runoob!'

rd()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

占位符

'Hi, %s, you have $%d.' % ('Michael', 1000000)

    如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串

另外一种格式化字符串的方法是format(),他会将传入的参数依次替换{1},{2},{3}......,...

代码语言:javascript
复制
    'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)

2.3布尔值

  布尔值只有TrueFalse两种值

2.4空值

2.5常量 

  10/3=3.3333

9/3=3.0

10//3=3

   10%3=1

2.6除法

余数:

>>> divmod(10,3) (3, 1)

四舍五入:

   >>> round(10/3,4)

3.0 >>> round(10.0/3,4) 3.3333

2.7数学函数与运算优先级

  1.绝对值

   abs(-10)=10

2.四舍五入

   round(1.234)=1

三:高级特性

1.切片

  L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引012,正好是3个元素

  如果第一个索引是0,还可以省略-------》L[:3]

  前10个数,每两个取一个----------》L[:10:2]

  所有数,每5个取一个--------------》L[::5]

  什么都不写,只写[:]就可以原样复制一个list-----------》L[:]

2.迭代

3.列表生成器

[x * x for x in range(1, 11)]--------》[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

四:列表(List) 

  list是一种有序的集合,可以随时添加和删除其中的元素。

list1 = ['Michael', 'Bob', 'Tracy']

  增:list1.append('adm')、

    list1.insert(1,'jack') #插入元素到指定的位置

  删:list1.pop(1) #不填则删除末尾元素

del list1[2]

list.remove("Bob") #通过值来删除元素

  查:list1[-1]

  改:list1[1] = 'Sarah',del list1[2];

  附加:s = ['python', 'java', ['asp', 'php'], 'scheme'],s[2][1]

五:元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。

tup1 = ('physics', 'chemistry', 1997, 2000);

:tup1[2]

:cmp(tuple1, tuple2)

:len(tup1)

六:字典

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

d = {key1 : value1, key2 : value2 }

  增:

  删: del d['key1']; # 删除键是'key1'的条目

d.pop(key1) #删除对应的键值对

d.clear(); # 清空词典所有条目

del d; # 删除词典

  查:d['key1']

   d.get(key1)---------->value1

   d..has_key(key1)-------->返回true或者false

d.keys()-------------->返回所以键['key2','key1']

dict.values()---------->返回所以值[value1, value2]

  改:d['key1']=value3

   d.update(dict2)----------->将dict2添加到d后面

  判:d.has_key(key1)---------->存在则返回true,否则为false

  较:cmp(dict1, dict2)

  长:len(dict)

七:运算符

  python中运算符分为7种: 1.算术运算符 2.比较(关系)运算符 3.赋值运算符 4.逻辑运算符 5.位运算符 6.成员运算符 7.身份运算符

    1.算术运算符:+、-、*、%(求余)、**(次幂a**b)、//(取整)

    2.比较运算符:==(比较是否相等)、!=、<>(比较两个数是否不相等)、>=、<=

    3.赋值运算符:=、+=、-=、*=、/=(除法赋值运算符)、%=(取模赋值运算符)、**=(幂赋值运算符)、//=(取整运算符)

    4.位运算符:&、|、^、

    5.and(与)、or(或)、not

    6.in(在)、not in(不在)

    7.is(是)、is not(不是)

  优先级

八:语句

    python分为7种:条件语句,循环语句(while循环,for循环),break语句,continue循环语句,pass循环

    python循环语句不用括号()括起来

1:条件语句

代码语言:javascript
复制
num = 5 
if num == 3:           # 判断num的值 
   print 'boss' 
elif num == 2:
   print 'user' 
elif num == 1:
   print 'worker' elif num < 0: # 值小于零时输出 
   print 'error' 
else:
   print 'roadman'    # 条件均不成立时输出

2:循环语句

while...else循环

代码语言:javascript
复制
count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

for循环

代码语言:javascript
复制
for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print '%d 等于 %d * %d' % (num,i,j)
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print num, '是一个质数'

九:函数

9.1函数规则

    1:函数代码块以def关键字开头,后接函数标识符名称和圆括号()

    2:任何传入参数和变量必须放在圆括号中间,圆括号中可以用于定义参数

    3:函数第一行语句可以放文档字符串,用于存放函数说明

    4:函数内容以冒号起始,并且缩进

代码语言:javascript
复制
#python函数
    def printinfo( name, age ):
       "打印任何传入的字符串"
       print "Name: ", name;
       print "Age ", age;
       return;
    #调用printinfo函数
    printinfo( age=50, name="miki" );

#shell函数
   function RintedConfig(){

                      } 

9.2函数参数

    1.必备参数、2.关键字参数、3.默认参数、4.不定长参数

    1:必备参数

      必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

    2:关键字参数

      使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def printinfo( name, age ):

printinfo( age=50, name="miki" );

    3:缺省参数

      调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

def printinfo( name, age = 35 ):

printinfo( name="miki" );

    4:不定长参数

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

def functionname([formal_args,] *var_args_tuple ):  

加了星号(*)的变量名会存放所有未命名的变量参数

5:使用as给函数命名

如果函数名字太长,可以用as来进行指定别名

from pizza import make_pizza as mp

9.3高阶函数

1.map()

    map()可接受两个参数,一个是函数,一个是Iterable,map将传入的参数作用到序的每个元素,并把结果作为新的Iterable返回。

代码语言:javascript
复制
def f(x):
    return x*x

map(f, [1,2,3,4])


>>[1,4,9,16]

 2.return()

  return接收一个函数和两个参数,reduce把结果继续和序列的下一个元素做累积计算。

代码语言:javascript
复制
def f(x,y):
     return  x+y

>>map(f, [1,2,3,4])
>>25

3.filter()

用于过滤序列,filter()将元素作用于每个人元素,并根据返回值是true或者false来决定元素的去留。

代码语言:javascript
复制
def is_odd(n):
    return n % 2==1


filter(is_odd, [1,2,3,4,5,6])

4.sorted()

  sorted()可将元素进行排序,

代码语言:javascript
复制
def reversed_cmp(x, y):
    if x > y:
        return -1
    if x < y:
        return 1
    return 0



>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]

9.4返回函数

  高阶函数除了可以将函数作为参数,也可以将函数作为结果返回。

代码语言:javascript
复制
def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum

9.5匿名函数

  关键字lambda表示匿名函数,

  匿名函数有个限制,就是只能使用一个表达式,返回值就是该表达式的结果。

代码语言:javascript
复制
map(lambda x: x*x, [1,2,3,4,5,6])

  使用匿名函数就不用担心名字冲突,同是匿名函数也是一个对象,可以将匿名函数作为参数。

代码语言:javascript
复制
ff = lambda x: x*x

print ff(5)

9.6装饰器

有时候为了增强函数的功能,但又不改变函数的定义,这种在代码运行期间动态的增加函数的功能的方法叫装饰器。

代码语言:javascript
复制
def log(text):
    def decorator(func):
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator


@log('execute')
def now():
    print('2015-3-25')

>>> now()
execute now():
2015-3-25

9.7偏函数

十:模块

10.1作用域

  有的函数和变量,我们仅仅希望在模块内使用,python中我们通过_前缀来实现。

  正常的函数和变量都是被公开的,_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用。

带下划线的函数,说明该函数不能根据 from * import来导入,明显在这个模块中你导入的还只是包,然后通过了这个导入的包去调用他内部存在的函数。

十一:面向对象编程

11.1类和实例

    class Student (Object):

    class后面接的是类名,类名首写字母必须大写,紧接的是object,表示该类所继承的类,如果没有,则继承自object类。

类:同一类事务的统称。

实例:根据类创建出来的一个个对象,每个对象拥有不同的方法。

    方法:类中的函数称为方法。

代码语言:javascript
复制
class Student(object):
    #init是特殊方法
    #init中第一个参数必须是self,表示创建实例本身,它是指向实例本身的引用,这样才能让实例访问类中所有的属性和方法。
    def __init__(self, name, score):
       #以self为前缀的变量都可以提供给类中所有的方法使用
        self.name = name
        self.score = score

    def print_score(self):
        print '%s: %s' % (self.name, self.score)

11.2访问限制

    如果要让内部属性,不被外部访问,可以将属性的名称前面加两个下划线,python中变量以__开头的则为私有变量(private),只有内部可以访问,外部不能被访问。

    外部要获取和改变,只能通过get和set方法来进行。

代码语言:javascript
复制
class Student(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print '%s: %s' % (self.__name, self.__score)

#外部直接获取
>>> bart = Student('Bart Simpson', 98)
>>> bart.__name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute '__name'

#必须使用getname和setname方法
代码语言:javascript
复制
class Student(object):
    ...
    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score

11.3基础多态

    继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写;

    有了继承,才能有多态。在调用类实例方法的时候,尽量把变量视作父类类型,这样,所有子类类型都可以正常被接收;

11.4获取对象信息

1.type()

    type可以判断一个变量、函数,类的类型。

2.isinstance()

isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上。

3.dir()

    如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list。

11.5__slots__

    如果想对向前类进行限制只添加某几个属性,可以使用__slots__来进行限制。

    __slots__只对当前类起作用,对继承的类不起作用。

代码语言:javascript
复制
class Student(object):
    __slots__=('name','age')

s =  Student()
s.name = 'yaohong'
s.age = 90
s.socre = 99


》》    s.socre = 99
AttributeError: 'Student' object has no attribute 'socre'

11.6@property

    Python内置的@property装饰器就是负责把一个方法变成属性调用的。

代码语言:javascript
复制
class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2014 - self._birth

11.7多继承

    一个子类同时获得多个父类的所有功能。 

    由于Python允许使用多重继承,因此,Mixin就是一种常见的设计。

    只允许单一继承的语言(如Java)不能使用Mixin的设计。

11.8定制类

__str__

代码语言:javascript
复制
class Student(object):
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name

    def __repr__(self):
        return self.name

print Student('YAOHONG')
print Student('YAOHONG')

11.9使用元类

十二:文件I/O

10.1打印到屏幕

print “”itnihao”

10.2读取输入

1.raw_input

str = raw_input("请输入:");

print "你输入的内容是: ", str

2.input

        input可以接收一个函数表达式

str = input("请输入:");

print "你输入的内容是: ", str

      3.open()

file object = open(file_name [, access_mode][, buffering])

file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。

        access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

        buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

      4.close()

        close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

      5.write()

        write()方法可将任何字符串写入一个打开的文件

      6.read()

        fo = open("foo.txt", "r+")

        str = fo.read(10);

print "读取的字符串是 : ", str

# 关闭打开的文件

fo.close()

      7.rename()

os.rename( "test1.txt", "test2.txt" )

      8.remove()

os.remove("test2.txt")

      8.mkdri()

        os.mkdir("test")在当前目录下创建新的test文件

      9.chdir()

os.chdir("/home/newdir")改变当前目录为/home/newdir目录

      10.getcwd()

        os.getcwd()获取当前目录

      11.rmdir()

# 删除”/tmp/test”目录

os.rmdir( "/tmp/test" )

十三:异常处理

    1.捕获异常:try/except

代码语言:javascript
复制
try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

    2.try/finally

     try-finally 语句无论是否发生异常都将执行最后的代码。

    3.触发异常

      使用raise语句自己触发异常

代码语言:javascript
复制
def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

十四:file

file使用open函数来创建

    常用函数:

file.close()

    file.flush()

    file.next() 返回下一行

    file.read(size) 从文件读取指定的字节数,如果未给定或为负则读取所有。

    file.readline(size) 读取整行

    file.seek() 设置文件当前位置

    file.tell() 返回文件当前位置

    file.truncate() 截取文件,截取文件通过size指定

    file.write() 将指定字符串写入文件

    file.writelines() 向文件写入一个字符串列表

十五:OS

    os.access() 检测文件是否可读可写,文件是否存在,是否拥有执行权限

     os.chdir(path) 切换到新的目录

     os.chmod() 更改文件或者目录权限

     os.chown() 更改文件所有者

     os.close() 关闭文件

os.path.join('a','b')字符串拼接形成a/b

os.system("ls") 执行shell命令,如assert os.system("rm -rf %s" % install_path) == 0, "卸载 失败"

os.path.exists(BIN_PATH) 判断某个变量是否存在

    os.unlink(path) 方法用于删除文件,如果文件是一个目录则返回一个错误。

    os.remove() 删除文件

十六:open

open(a.txt).read() 去取a.txt文件

十七:enumerate

    enumerate(list1) 枚举list,map等获取索引和元素 for index, item in enumerate(list1):

十八:string

    str.strip("@") 去掉以@开头结尾的

    str.startswith("#") 判断是否以#开头

十九:Python常见模块

python常见命令如下,点击链接查看详情

  1.os

  2.os.path

  3.shutil

4.sys

  5.inspect

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:中文编码
  • 二:变量和简单类型
    • 2.1数字
      • 2.2字符串
        • 2.3布尔值
          • 2.4空值
            • 2.5常量 
              • 2.6除法
                • 2.7数学函数与运算优先级
                • 三:高级特性
                  • 1.切片
                    • 2.迭代
                      • 3.列表生成器
                      • 四:列表(List) 
                      • 五:元组
                      • 六:字典
                      • 七:运算符
                      • 八:语句
                      • 九:函数
                        • 9.1函数规则
                          • 9.2函数参数
                            • 9.3高阶函数
                              • 9.4返回函数
                                • 9.5匿名函数
                                  • 9.6装饰器
                                    • 9.7偏函数
                                    • 十:模块
                                      • 10.1作用域
                                      • 十一:面向对象编程
                                        • 11.1类和实例
                                          • 11.2访问限制
                                            • 11.3基础多态
                                              • 11.4获取对象信息
                                                • 11.5__slots__
                                                  • 11.6@property
                                                    • 11.7多继承
                                                      • 11.8定制类
                                                        • 11.9使用元类
                                                        • 十二:文件I/O
                                                        • 十三:异常处理
                                                        • 十四:file
                                                        • 十五:OS
                                                        • 十六:open
                                                        • 十七:enumerate
                                                        • 十八:string
                                                        • 十九:Python常见模块
                                                        相关产品与服务
                                                        容器服务
                                                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                        领券
                                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档