您的位置:首页 > 编程语言 > Python开发

学习python基础,Day1

2017-11-18 18:09 295 查看
  我是做前端开发的,最近想换换脑子,而且也对现在比较火的深度学习有着深厚的兴趣,于是想到什么就做什么,于是打算从学习python入手,先学习python基础而后开始学习算法,再进行机器学习的研究,打算把这个当作是自己工作以外的兴趣吧

,接下来每学一天我都会以博客的形式记录下来,以当做我以后可以回顾的痕迹。

  python是什么?

解释型语言

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

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

动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
  python优缺点

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

再看缺点:
速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win
thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

   代码初体验

#! python3
# coding: utf-8

'''
注释有2种,多行注释和单行注释:
多行注释是六个’号,单行是#开头(真是奇葩的写法)
'''
print("Hello World")



百年不变的Hello World,嗯。。。仪式感很重要

变量的写法:
#! python3
# coding: utf-8
print("aaa") #自调用print函数输出到命令行

name ="fff"  #没有任何标识符的变量赋值,就是这么暴力,比JavaScript还省代码。。

print(name)

age = 10  # 解释器会自动辨别所赋值的类型

age2 = age +11

print(age2)


用户输入函数以及变量和字符串拼接:
#! python3
# coding: utf-8

'''
input 是接收用户输入函数
int 转换成整数型
str 转换成字符串
%s,%d,%f占位检测类型符,用于字符串占位
%s 此处只能是字符串
%d 此处只能是整数型
%f 此处只能是浮点类型
'''
name = input("name:")
age = int(input("age:"))
print(type(age),type(str(age)));
job = input("job:")
salary = int(input("salary:"))

s ='''
-------info %s -------
name:  %s
age:   %d
job:   %s
salary:  %d
------------------------
'''%(name,name,age,job,salary)
print(s)

s2 = '''
-------info _name -------
name:  {_name}
age:   {_age}
job:   {_job}
salary:  {_salary}
------------------------
'''.format(
_name=name,
_age=age,
_job=job,
_salary=salary
)
print(s2)
#还有两种字符串和变量拼接的方法,但是用的不多,就不再赘述了


if判断:
#! python3
# coding: utf-8
# Author: Bruce Xue

'''
if 判断
注意:
在语言中由于没有{}做代码块的标识,所以顶格的代码是父级代码,后面带缩进的代码,
是子级代码,如果代码结束重新开始写接下来的代码,需要顶格写
'''

_user = "Bruce"
_passWord = 123456;
userName = input("userName:")
passWord = int(input("passWord:"))

if _user==userName and _passWord==passWord:
print("login successful:{name}".format(name=userName))
else:
print("login error")
# 有点不习惯没有{}的写法,因为有时看太快就不清楚什么时候是代码结束点


while 循环:

#! python3
# coding: utf-8
'''
while 循环
格式:
while(flag):
else:
'''
_age = 90

count = 0
while count<3:
age = int(input("age:"))
if age != _age:
print("sorry please repeat print{count}".format(count=count))
else:
print("yea~~")
break
count+=1

else:
print("fouck off")
#没啥好说的,就是在while循环上多了else语句,在上面正常循环完后会执行else里面的代码


for循环代码:
#! python3
# coding: utf-8

'''
for 循环:
格式:
for i in xx:
else:
注意这里else是只有当所有循环正常走完后才会执行else中的代码
'''
_age = 90

'''
range()可以获得一个数值序列,
range(10),生成了一个包含10个值的链表,它用链表的索引值填充了这个长度为 10 的列表
range(5, 10)
5 through 9

range(0, 10, 3)
0, 3, 6, 9

range(-10, -100, -30)
-10, -40, -70
'''
for i in range(3):
age = int(input("age:"))
if age != _age:
print("sorry please repeat print")

else:
print("yea~~")
break
else:
print("fouck off")


   至此今天的学习内容到此为止,虽然不多,但收获颇多,一次次露出居然还能这么写的表情,我想这就是代码的魅力吧,哈哈。

明天学习目标:
  
列表、元组操作
字符串操作
字典操作
集合操作
文件操作
字符编码与转码 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: