Python学习笔记

复习提纲

一、python语言的特点

  • 简单:Python 是一种代表简单主义思想的语言。阅读一个良好的 Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格。Python的这种伪代码本质是其优点之一,使用户能够专注于解决问题而不是去搞明白语言本身。

  • 易学:Python 有极其简单的语法,非常容易上手。

  • 免费、开源:Python 是 FLOSS(自由/开源软件)之一。简单来说,用户可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS 是基于一个团体分享知识的概念,这也是为什么 Python 如此优秀的原因之一:它由一群希望看到 Python更加优秀的人创造,并被他们不断改进。

  • 高层语言:使用 Python 语言编写程序时,不用考虑如何管理程序使用的内存等底层细节。

  • 可移植性强:由于它的开源本质,Python 已经被移植在许多平台上。如果 Python 程序没有使用依赖于系统的特性,那么程序不用修改就可以在下述任意平台上面运行。这些平台包括
    Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm
    OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp
    Zaurus、Windows CE、Pocket PC 和 Symbian。

  • 解释型语言:编译型语言(如 C 或 C++)源程序从源文件(即 C 或 C++ 语言)转换到二进制代码(即 0 和 1)的过程通过编译器和不同的标记、选项完成,当运行程序的时候,连接器把程序从硬盘复制到内存中并且运行。而 Python
    程序不需要编译成二进制代码,直接从源代码运行程序。

  • 面向对象:Python 既支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他语言(如
    C++ 和 Java)相比,Python 以一种非常强大又简单的方式实现面向对象编程。

  • 可扩展性强:如果希望把一段关键代码运行得更快或希望某些算法不公开,可以使用 C 或 C++ 语言编写这部分程序,然后在 Python 程序中调用它们。

  • 可嵌入性强:可以把 Python 嵌入 C/C++ 程序,从而向用户提供脚本功能。

  • 丰富的扩展库:Python 扩展库很庞大,可以帮助处理包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV
    文件、密码系统、GUI(图形用户界面)、Tk 以及其他与系统有关的操作。只要安装了 Python,所有这些功能都是可用的,这被称作
    Python 的“功能齐全”理念。除了扩展库以外,还有许多其他高质量的库,如 wxPython、Twisted 和 Python
    图像库等。

缺点:速度慢、对多处理器的利用不充分

二、python语言的执行过程

  • Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行

三、面向对象编程,会编写类函数

定义:

Python使用class关键字来定义类,class关键字之后是一个空,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。
类名的首字母一般要大写,当然也可以按照自己的习惯定义类名,但一般推荐参考惯例来命名,并在整个系统的设计和实现中保持风格一致,这一点对于团队合作尤其重要。

class Car:
	def infor(self):
		print("This is a car")

定义了类之后,可以用实例化对象,并通过"对象名.成员"的方式来访问其中的数据成员或成员方法。

class Car:
    def infor(self):
        print("This is a car ")

car = Car()
car.infor()
This is a car 
编写类函数
class Car:
	price = 10					#定义类属性(价格),Car的价格都是10万
	def __init__(self,c):
			self.color = c		#定义实例属性

car1 = Car("Red")				#实例化对象(car1为红色)
car2 = Car("Blue")
print(car1.color,Car.price)		#查看实例(car1)的属性(价格,颜色)
Car.price = 11					#修改类(Car)的属性(价格)
Car.name = "QQ"					#动态增加类属性,(所有的Car都叫QQ)
car1.color = "Yellow"			#修改实例属性(car1的颜色被修改)
print(car2.color,Car.price,Car.name)
print(car1.color,Car.price,Car.name)

Python类型的动态性使得我们可以动态为自定义类及其对象增加新的属性和行为,俗称混入(mixn)机制,这在大型项目开发中会非常方便和实用。

简单应用

先定义类(一个car的.py文件)

class car:
    def __init__(self,brand,color,price):				#注意是init不是int
        self.brand = brand
        self.color = color
        self.price = price
####################################男人的选择标准#################################
    def on_man_list(self):
        if self.price >= 35:
            return True
        else:
            return False
####################################女人的选择标准#################################
    def on_women_list(self):
        if self.color == "pink":
            return "满意,是我喜欢的颜色"
        else:
            return "不满意,换个颜色"

接着新建一个新的.py

from car import  car
##############################搞出car1~4让男女进行选择#########################
car1 = car("QQ", 'pink', 20)
car2 = car("Audi", 'black', 30)
car3 = car("volvo","pink",35)
car4 = car("Lincoln","white",40)
###################################显示出判断的结果############################
print(car1.on_man_list())
print(car1.on_women_list())
print(car2.on_man_list())
print(car2.on_women_list())
print(car3.on_man_list())
print(car3.on_women_list())
print(car4.on_man_list())
print(car4.on_women_list())

执行结果

False
满意,是我喜欢的颜色
False
不满意,换个颜色
True
满意,是我喜欢的颜色
True
不满意,换个颜色
公有和私有成员
  • Python并没有对私有成员提供严格的访问保护机制。
  • 在定义类的成员时,如果成员名以两个下划线“__”开头则表示是私有成员。私有成员在类的外部不能直接访问,需要通过调用对象的公有成员方法来访问,也可以通过Python支持的特殊方式来访问。
  • 公有成员既可以在类的内部进行访问,也可以在外部程序中使用。
在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。用下划线作为变量名和方法名前缀和后缀来表示类的特殊成员:
  • _xxx:受保护成员,不能用’from module import *'导入;
  • xxx:系统定义的特殊成员;
  • __xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
    注意:Python中不存在严格意义上的私有成员。
方法
在类中定义的方法可以粗略分为四大类:公有方法、私有方法、静态方法和类方法。
  • 公有方法、私有方法都属于对象,私有方法的名字以两个下划线“__”开始,每个对象都有自己的公有方法和私有方法,在这两类方法中可以访问属于类和对象的成员;
  • 公有方法通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过self调用或在外部通过Python支持的特殊方式来调用。
  • 如果通过类名来调用属于对象的公有方法,需要显式为该方法的self参数传递一个对象名,用来明确指定访问哪个对象的数据成员。
  • 静态方法和类方法都可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员。
  • 静态方法可以没有参数。
  • 一般将cls作为类方法的第一个参数名称,但也可以使用其他的名字作为参数,并且在调用类方法时不需要为该参数传递值。

四、numpy数组定义和运算、切片

定义:
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])		#直接赋值定义
>> [[1 2 3]
    [4 5 6]]

A = np.array([1, 2, 3],dtype=complex)		#定义了一个负数complex。
>>[1.+0.j 2.+0.j 3.
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值