返回顶部
首页 > 资讯 > 后端开发 > Python >【恶补】之python一天速成
  • 205
分享到

【恶补】之python一天速成

python 2023-01-31 06:01:37 205人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

    python一天速成都是骗纸~怎么可能一天~只是快速了解一些基本的     首先我是个Python新手,只在网上搜例子然后用python写过一些分析文件的脚本,现在工作需要,要短时间进一步了解python。这篇文章也不是给完全新手

    python一天速成都是骗纸~怎么可能一天~只是快速了解一些基本的

    首先我是个Python新手,只在网上搜例子然后用python写过一些分析文件的脚本,现在工作需要,要短时间进一步了解python。这篇文章也不是给完全新手看的,还是给对python有一点接触且需要大致掌握或者对其他语言有一定研究的人看的。

一、执行过程

    首先python是先编译后解释的语言,与PHP和java类似,php是先编译成opcode再解释执行,java是编译成.class文件然后由虚拟机执行,只是编译时机不同,php和python一般是运行时先编译再执行,java是先编译,再拿编译好的.class去执行。

    Python在执行时,首先会将.py文件中的源代码编译成Python的bytecode(字节码),然后再由PythonVirtual Machine来执行这些编译好的bytecode。Python的标准实现是由可移植的ANSIC编写的,可以在目前所有的主流平台上编译和运行。

如下:

test.py定义一个函数

#!/usr/bin/python2.6
# -*- coding: utf-8 -*-

def hello(s):
    print s;

    然后另一个python文件使用test.py中的函数

#!/usr/bin/python2.6
# -*- coding: utf-8 -*-
from test import hello

hello("杨令云")

    输出结果没什么特别的,就是输出个字符串。其中coding部分是为了指定编码,这样使用中文不会出现问题。

    会看到test.py的旁边生成了test.pyc这个文件,因为是二进制文件,vim -b一下,再:%!xxd一下,可以看到一堆16进制的东西,其实就是python编译后生成的字节码。而使用test.py的文件并不会生成这个文件。

    了解了一下,主要原因是python文件在编译后生成的字节码会load到内存中执行,当前执行的文件字节码由于在内存中,一般没有必要保存成文件到硬盘上,而所调用的其他python文件,为了重用和执行效率,将字节码保留成文件,在下次执行的时候,对比.py和.pyc文件的最后修改时间,若一致则执行pyc文件,若不一致重新编译一遍即可,说白了为了重用和cache。


二、数据类型

    python是动态类型强类型语言,如果谁把字符串和整数相加那就要报错啊~

>>> print "df"+5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

  • python与php、lua等类似,内置类型提供了常用的数据结构,例如列表(list)、字典(dictionary)、字符串(string),提供了很大便利。
  • 说python是动态类型,因为python的变量定义不需要指定类型,不像c和java每个变量会绑定数据类型,而像php这种,一个变量可以赋予多种类型的数据。同时在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,只有到运行时才去检查,所以可能会失败
  • 说python是强类型语言,上面已举例,不像php这种在计算时自动进行类型转换,之前文章也有写过,对于php这种弱类型语言,其实在转换的时候有很多坑在里面~
  • python与php、java类型,不需要像c一样进行底层的内存管理,python有GC,且采用了对象引用计数,并基于引用计数实现自动垃圾回收。

    python里万物皆对象,有以下基本数据类型

1、None,表示对象为空值,None与0或者False比较都是False

2、Boolean类型,True、False,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了__nonzero__()或__len__()方法且方法返回0或False,则其实例也被当作False。我测试使用的python2.7.3,实测下来,如果与False做比较,0==False是Ture,其他的与False做比较还是False,但是如果把0、()等这些放在if条件中,条件判断结果还是False。

另外python里不使用&&、||这些做运算,是使用and、or、not这种英文单词。

3、整型、长整型、浮点型,整型4字节,长整型远大于c里的long,可以认为最大支持无限大了。

4、恩python比较牛的是支持复数,啥是复数,学过数学的肯定接触过~

5、字符串,单引号双引号没啥区别,3个引号括起来用来表示多行内容,并且保留格式

>>> print '''haha
...      one
...   two
... three'''
haha
     one
  two
three

用\转义神马的跟其他语言类似,字符串前加r或者R意思是后面的字符串里面默认全不转义。

字符串支持切片str[start:end:step],意思是从start开始到end结束,取step为步长进行切片,支持使用负数从后往前切片。

6、列表[],list,顺序数组的概念,list有append、extend、insert、index、remove、del、pop等操作

>>> array=[1,2,3,4,5,6]
>>> print array[2:5:2]
[3, 5]
>>> print len(array)
6
>>> print array.index(3)
2

因为万物皆对象,所以数组是具有一些方法的,同时数组支持切片array[start:end:step],意思是从start开始到end结束,取step为步长进行切片,支持使用负数从后往前切片。


7、元组(),tuple,与列表类似,但是一旦初始化就不能再修改,速度快

8、集合{},set,数学里的定义,无序,不重复,支持运算
>>> seta={1,2,3,4,5}   
>>> setb={3,4,5,6,7}   
>>> print seta - setb
set([1, 2])
>>> print seta & setb
set([3, 4, 5])
>>> print seta | setb
set([1, 2, 3, 4, 5, 6, 7])

9、字典{},{key:value},像JSON,注意key要为不可变类型,例如整型浮点和元组,字典具有del obj['a'];obj.clear();等操作

>>> obj={5:4, 'a':'b'}
>>> print obj['a']
b
其他、

python注释使用#

每行结束可以用;分号也可以不使用,使用;可以在一行写多个语句但是不推荐

代码块和缩进很重要,一般人都懂的


三、语法

    python和lua有的地方有点像,有很多语法糖,写代码时有时会很简洁,当然也就会不易懂。

  • 定义函数使用

def foo(param1, param2):
      lalalala

  • 导入其他py代码

    使用import或者from xxx import xxx

  • print时,用逗号分隔的话,输出会有空格,另外也可以类似c中printf格式化输出

>>> print 'a',1
a 1
>>> print '%d%d'%(2,3)
23

  • 赋值

>>> (a,b,c,d,e,f,g)=range(7)
>>> print a,b,c,d,e,f,g
0 1 2 3 4 5 6

  • 遍历

>>> list = [1,2,3,4,5]
>>> list = [ele *2 for ele in list]
>>> print list
[2, 4, 6, 8, 10]

    类似php中的array_map等方法

    字典遍历的时候使用dic.keys();dic.values();dic.items();


  • 三元操作符,与lua一样,python没有?:三元操作符,使用and和or组合可以达到三元操作符的目的,原理就是,or返回两个操作数里第一个为True(真)的操作数,而and是a为True就返回b,a为False就返回a。

>>> a=True
>>> b=1
>>> c=2
>>> print a and b or c
1


  • lambda类似c的宏或者内联函数的感觉,或者js闭包的意思

>>> print (lambda x:x*2)(3)
6
>>> print (lambda x:x*x*3.14)(3)
28.26
>>> print (lambda x:x*x*x)(3)   
27
>>> f=lambda x:x*x*x
>>> f(2)
8
  • 循环语句
while True:
    pass
else:
    pass

for i in range(0, 5):
    print i
else:
    pass

    pass代表空语句,range函数相信也有所了解了,else是循环结束时执行的语句,如果循环里有break,不会执行else语句。

  • 关键参数

    python里有个好玩的东西是

>>> def foo(a=1, b=2, c=3):
...     print a,b,c
... 
>>> foo(b=5, c=6)
1 5 6
    平时如果我们搞了很多默认参数,一旦只需要对最后一个参数传值时,就要悲剧的写一大堆参数默认值,这样方便了许多。

  • __name__

__name__的值通常为文件名称,如果值为__main__,代表是用户执行的文件,也就是类似main入口一样的。


  • 常用的方法

    关于list、tuple、set等常用的方法就不在这里介绍了,python的文章和文档一搜一大把,用的时候查查,这里只介绍基本的~


四、面向对象编程

写个简单面向对象的例子

第一个文件imtest.py

print __name__

class Knight:
    '''I am strong Knight'''
    Count = 0
    def __init__(self, name, hp):
        Knight.Count += 1
        self.name = name
        self.__hp = hp
        print 'knight comes'

    def die(self):
        self.__hp = 0

    def getHp(self):
        return self.__hp

第二个文件test.py

import imtest
print __name__

class HolyKnight(imtest.Knight):
    '''I am great HolyKnight'''
    def __init__(self, name, hp, mp):
        imtest.Knight.__init__(self, name, hp)
        self.__mp = mp
        print 'holyknight comes'

kn = HolyKnight('cloudy', 10, 5)

print HolyKnight.__doc__
print imtest.Knight.Count
print kn.name
print kn.getHp()
print kn.__hp

最后输出为

imtest
__main__
knight comes
holyknight comes
I am great HolyKnight
1
cloudy
10
Traceback (most recent call last):
  File "test.py", line 17, in <module>
    print kn.__hp
AttributeError: HolyKnight instance has no attribute '__hp'

    这里面包含了几个点,

  • 如何定义一个类,使用class,类中静态变量定义,方法定义,如何继承,如何使用父类方法,这些都可以在示例代码中看到。
  • 调用类方法的方式是instance.method(arguments)。它等价于调用Class.method(instance, arguments),这一点与lua是一样的~
  • 类中静态变量,及方法定义,这一点与lua实现面向对象很类似,在使用一个类实例的方法时,使用a.func()这样来调用,而实际上会将a这个对象的引用作为self参数传入方法里,实现方法里this指针的作用。这一块需要理解一下,如果对lua较熟就简单了。
  • __init__ 和__del__分别为构造函数和析构函数,默认方法和属性都是public的,示例中__双下划线开头的属性就是private的,不能直接读取。
  • 那个__doc__是可以放在类或者方法定义下面使用字符串描述对象的。


五、其他

这些就不在python速成中介绍了~但是我认为是python语法中还很重要的几个东西,后续要慢慢吃透。

  • 异常处理,try..except...else...finally...
  • assert语句,与其他语言中assert类似
  • yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符,有兴趣可以搜一下相关介绍,粗看感觉跟协程有点像,具体还有待了解。
  • with语句,在一个场景中运行语句块。比如,运行语句块前加,然后在语句块运行结束后释放它。似曾相识。

尾、

    找资料、看、写代码试,花了3-5个小时,对python语言层面有个大致了解,后面要开始了解下WEB.py框架了,有时间再细细研究python的其他语法



--结束END--

本文标题: 【恶补】之python一天速成

本文链接: https://lsjlt.com/news/189571.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【恶补】之python一天速成
        python一天速成都是骗纸~怎么可能一天~只是快速了解一些基本的     首先我是个python新手,只在网上搜例子然后用python写过一些分析文件的脚本,现在工作需要,要短时间进一步了解python。这篇文章也不是给完全新手...
    99+
    2023-01-31
    python
  • 万恶之源 - Python基础知识补充
    编码转换 编码回顾:   1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符.    没有中⽂, 8个01代码, 8个bit, 1个byte   2. GBK: 中⽂国标码, ⾥⾯包含了ASCII编...
    99+
    2023-01-30
    万恶 之源 基础知识
  • 万恶之源 - Python基础数据类型一
    整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是:  -2**31~2**31-1,即-2147483648~2147483647 在64位机器上int的范围是: -2**6...
    99+
    2023-01-30
    万恶 之源 数据类型
  • vscode之python集成(一)
    首先,我本人是想用vscode来写python项目的,我下载了vscode软件的python安装包    vscode直接小白式解压安装就好,至于python的安装的话只是多了一步配置环境变量,之后为了验证python开发环境是否建好,可...
    99+
    2023-01-31
    vscode python
  • Python速成篇之像selenium一样操作电脑详解
    目录常用用法一常用用法二常用用法三常用用法四常用用法五常用用法六末段小结为了照顾新手我会写的很详细,若是只是来寻找函数用法的小伙伴可以直接滑到末段小结哦 首先我们需要使用到的第三方库...
    99+
    2024-04-02
  • python清理一天之前的文件
    网上脚本,我做的注释: [root@localhost ~]# vim clean_mon_mail.py #!/usr/bin/env python #-*- coding:utf-8 -*- import os import time ...
    99+
    2023-01-31
    文件 python
  • Python成长之路第一篇(3)_初识字
    经过上章的学习我们已经了解到了列表可以通过索引来获取对应的值,在本章我们将学到通过名字来索引数据,这种结构的类型称之为映射(maooing),在Python中字典是唯一内建的映射类型,其中的值我们称之为键值对,也就是由(键,值)组成映射关系...
    99+
    2023-01-31
    第一篇 成长之路 Python
  • 如何快速的生成一个Python爬虫请求头
    今天就跟大家聊聊有关如何快速的生成一个Python爬虫请求头,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Py...
    99+
    2023-06-06
  • 【python】之pyinstaller模块,python程序打包成一个可执行exe 文件(超详细)!
    PyInstaller是一个在Windows、GNU/Linux、macOS等平台下将Python程序冻结(打包)为独立可执行文件的工具, 用于在未安装Python的平台上执行Python编写的应用程序 一.pyinstaller模块...
    99+
    2023-08-31
    python pip
  • 郭敬明五年电影最动人之作 | Python爬取《悲伤逆流成河》 大禹编程 今天
    一、我的感受知道《悲伤逆流成河》上映还是在qq空间看见学弟发了说说,突然想起初中追小四的书,每天看到晚上10点多,昨天看了枪版的《悲伤逆流成河》,整个故事情节几乎和小说一模一样,当然缩减是避免不了的,最大的不一样的是原著里的易遥是跳楼自杀的...
    99+
    2023-06-02
  • 从零开始,三分钟内用Python快速自建一个私有化 ChatGpt 聊天机器人网站
    用 Python 构建由 gpt-3.5-turbo API 支持的聊天机器人网站 自2023年3月1日发布“ChatGPT API”以来,已经开发出了数千个基于该API的应用程序,为企业和个人开启了新的可能性时代。借助GPT-3...
    99+
    2023-09-16
    chatgpt 机器人 人工智能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作