python之freshman00

2021年11月24日 阅读数:4
这篇文章主要向大家介绍python之freshman00,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

编译型vs解释型

编译型
优势:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。
缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。python

解释型
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。git

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言算法

Python优缺点api

先看优势多线程

  1. Python的定位是“优雅”、“明确”、“简单”,因此Python程序看上去老是简单易懂,初学者学Python,不但入门容易,并且未来深刻下去,能够编写那些很是很是复杂的程序。
  2. 开发效率很是高,Python有很是强大的第三方库,基本上你想经过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大下降开发周期,避免重复造轮子。
  3. 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
  4. 可移植性————因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工 做在不一样平台上)。若是你当心地避免使用依赖于系统的特性,那么你的全部Python程序无需修改就几乎能够在市场上全部的系统平台上运行
  5. 可扩展性————若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中使用它们。
  6. 可嵌入性————你能够把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

再看缺点:app

  1. 速度慢,Python 的运行速度相比C语言确实慢不少,跟JAVA相比也要慢一些,所以这也是不少所谓的大牛不屑于使用Python的主要缘由,但其实这里所指的运行速度慢在大多数状况下用户是没法直接感知到的,必须借助测试工具才能体现出来,好比你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是很是夸张了,可是你是没法直接经过肉眼感知的,由于一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数状况下Python已经彻底能够知足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种状况下,固然仍是建议你用C去实现的。
  2. 代码不能加密,由于PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,若是你的项目要求源代码必须是加密的,那你一开始就不该该用Python来去实现。
  3. 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread,在Windows上为Win thread,彻底由操做系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即便在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行。关于这个问题的折衷解决方法,咱们在之后线程和进程章节里再进行详细tansuo
    字符串操做:
     1 name.capitalize()  首字母大写
     2 name.casefold()   大写所有变小写
     3 name.center(50,"-")  输出 '---------------------Alex Li----------------------'
     4 name.count('lex') 统计 lex出现次数
     5 name.encode()  将字符串编码成bytes格式
     6 name.endswith("Li")  判断字符串是否以 Li结尾
     7  "Alex\tLi".expandtabs(10) 输出'Alex      Li', 将\t转换成多长的空格 
     8  name.find('A')  查找A,找到返回其索引, 找不到返回-1 
     9 
    10 format :
    11     >>> msg = "my name is {}, and age is {}"
    12     >>> msg.format("alex",22)
    13     'my name is alex, and age is 22'
    14     >>> msg = "my name is {1}, and age is {0}"
    15     >>> msg.format("alex",22)
    16     'my name is 22, and age is alex'
    17     >>> msg = "my name is {name}, and age is {age}"
    18     >>> msg.format(age=22,name="ale")
    19     'my name is ale, and age is 22'
    20 format_map
    21     >>> msg.format_map({'name':'alex','age':22})
    22     'my name is alex, and age is 22'
    23 
    24 
    25 msg.index('a')  返回a所在字符串的索引
    26 '9aA'.isalnum()   True
    27 
    28 '9'.isdigit() 是否整数
    29 name.isnumeric  
    30 name.isprintable
    31 name.isspace
    32 name.istitle
    33 name.isupper
    34  "|".join(['alex','jack','rain'])
    35 'alex|jack|rain'
    36 
    37 
    38 maketrans
    39     >>> intab = "aeiou"  #This is the string having actual characters. 
    40     >>> outtab = "12345" #This is the string having corresponding mapping character
    41     >>> trantab = str.maketrans(intab, outtab)
    42     >>> 
    43     >>> str = "this is string example....wow!!!"
    44     >>> str.translate(trantab)
    45     'th3s 3s str3ng 2x1mpl2....w4w!!!'
    46 
    47  msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') 
    48 
    49  >>> "alex li, chinese name is lijie".replace("li","LI",1)
    50      'alex LI, chinese name is lijie'
    51 
    52  msg.swapcase 大小写互换
    53 
    54 
    55  >>> msg.zfill(40)
    56 '00000my name is {name}, and age is {age}'
    57 
    58 
    59 
    60 >>> n4.ljust(40,"-")
    61 'Hello 2orld-----------------------------'
    62 >>> n4.rjust(40,"-")
    63 '-----------------------------Hello 2orld'
    64 
    65 
    66 >>> b="ddefdsdff_哈哈" 
    67 >>> b.isidentifier() #检测一段字符串能否被看成标志符,便是否符合变量命名规则
    68 True