首页 > 代码库 > python基础
python基础
python
一 关于python脚本中的第一行内容 :
#!/usr/bin/python 这种写法表示直接引用系统的默认的 Python 版本,这样的话python 程序移植到其他机器上可能运行的时候有问题,因为别人系统默认的 Python版本与你预期的并不一致。
#!/usr/bin/env python 这种写法表示,引用环境变量里面自定义的 Python 版本,具有较强的可移植性,推荐这种写法
[root@localhost ~]# python -V###查看python的版本,现在python的版本有2.x和3.x的,但2.0和3.0完全不兼容###
Python 2.7.5
[root@localhost ~]# vim hello.py
#!/usr/bin/env python
a = 1
print a
[root@localhost ~]# chmod +x hello.py###执行时,要加可执行的权限###
[root@localhost ~]# ./hello.py
File "./hello.py", line 2
SyntaxError: Non-ASCII character ‘\xe5‘ in file ./hello.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
[root@localhost ~]# vim hello.py
####SyntaxError指语法错误,encoding declared,也就是你的编码格式有问题:用国际通用的编码格式utf-8,数据库Mysql里面也常常要注意编码格式的问题
指定编码格式的方法有很多种,这里就列举几个吧:
#coding:utf-8
#coding=utf-8
#encoding:utf-8
#encoding=utf-8
#!/usr/bin/env python
#coding:utf-8
#定义变量a,值为1
a = 1
print a
[root@localhost ~]# ./hello.py
1
####交互式使用python###
当在shell命令行输入python命令会进入一个交互式的python编程环境;
python沿袭了C语言的很多用法,输出一字符串,使用print;
退出python的交互式环境通过快捷键ctrl+d或者使用exit()函数;
[root@localhost ~]# python
Python 2.7.5 (default, Feb 11 2014, 07:46:25)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> print a
1
>>>
使用交互式街界面的不好处在于:当你退出此次交互界面时,你所定义的变量的值就会被内存释放,下次就不能使用。
#####字符编码:######
ASCII:1字节=8位,可以对应2^8=256个字符,中文就不够对应,就有了Unicode
Unicode:用2字节=16位表示,2^16=65536 ,这样不管是中文还是英文均对应2个字节,有点浪费
utf-8:英文字母对应1个字节,中文对应3个字节
GB2312:
####如果字符串加上u就表示时unicode类型###
>>> a = "你好"
>>> type(a)
<type ‘str‘>
>>> b=u"你好"
>>> type(b)
<type ‘unicode‘>
>>>
####内存读取的时候是用Unicode,因为内存读取的时候不能有的是一个字节,有的是三个字节,这是不符合规则的,而存在硬盘的时候,为了节省空间要用:utf-8,因此要进行字符的编码和字符的解码###
字符的编码(encode):将unicode转化成utf-8
字符的解码(decode):将utf-8转化成unicode
>>> name_unicode = u"你好"
>>> type(name_unicode)
<type ‘unicode‘>
>>> name_utf8 = name_unicode.encode(‘utf-8‘)
>>> type(name_utf8)
<type ‘str‘>
>>> name_unicode1 = name_utf8.decode(‘utf-8‘)
>>> type(name_unicode1)
<type ‘unicode‘>
>>>
python的解释器:
cpython:python默认使用的解释器是cpython,在该解释器下,有些过长的变量名不能补全
ipython:cpython的高配版,可以补全一些变量,导入模块
Jpython
IronPython
pypy:JIT,just in time
编辑python脚本可以用:
vim
gedit
pycharm
atom--->github
######python脚本和c的编程格式的区别###
C代码块是通过花括号 {} 做以区别
[root@foundation38 bin]# cat hello.c
#include <stdio.h>
void hello(){
printf("hello!");
}
void main(){
hello();
printf("\n");
}
[root@foundation38 bin]# gcc hello.c -o hello
[root@foundation38 bin]# ./hello
hello!
python编程初级要掌握的编程风格如下:
1 不要在行尾加分号;
2 每行不超过80个字符;
3 Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。
4 增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。
[root@foundation38 bin]# cat hello.py
#!/usr/bin/env python
def hello():
print"hello"
def main():
hello()
print"world"
main()
[root@foundation38 bin]# chmod +x hello.py
[root@foundation38 bin]# ./hello.py
hello
world
####if用法###
#!/usr/bin/env python
#coding:utf-8
_author_ = "xiao"
‘‘‘
@author:xiaowenya
@file:x.py
@contact:1097667868@qq.com
@time:6/25/1711:58 AM
@desc:
‘‘‘
x=10
if x>0:
print ‘x 是正数‘
a=x-10
print a
elif x<0:
print ‘x 是负数‘
a=x+10
print a
else:
print ‘x是零‘
####从键盘输入###
raw_input() ###接受从键盘的输入,输入的内容为字符类型###
input() ###接受从键盘的输入,输入的内容为数值类型###
In[2]: print 1
1
In[4]: print ‘hello‘
hello
In[5]: print 1>2###数字比较,显示bool值###
False
In[6]: print 100+200###显示结果###
300
In[7]: raw_input()
>? hello world
Out[7]: ‘hello world‘
In[8]: name = raw_input("NAME:")
NAME:>? xiao
In[10]: print name
xiao
In[11]: age = raw_input("AGE:")
AGE:>? 1
In[12]: print age > 12###从键盘上接受的数字,应该用input()接收,不然比较的时候会有问题###
True
In[13]: age = input("AGE:")
AGE:>? 23
In[14]: print age < 12
False
In[16]: print age == 18
False
In[17]: type(age)
Out[17]: int
In[18]: type(name)
Out[18]: str
小练习: 编写一程序,录入信息包括 hostname、IP、used_year、CPU、Memory、manager_name ,如果使用年限超过10年,直接显示警告
信息“该服务器使用年限太久!”,如果使用年限不超过10年,显示该服务器信息如下面的格式如下:
主机信息
主机名: hostname
IP:IP
使用年限:used_year
CPU:CPU
Memory:Memory
代码如下:
#!/usr/bin/env python
# coding:utf-8
_author_ = "xiao"
‘‘‘
@author:xiaowenya
@file:1.py
@contact:1097667868@qq.com
@time:6/25/172:54 PM
@desc:
‘‘‘
hostname = raw_input("hostname:")
ip = raw_input("ip:")
used_year = input("used_year:")
CPU = raw_input("CPU:")
Memory = raw_input("Memory:")
manager_name = raw_input("manager_name:")
if used_year > 10:
print "该服务器使用年限太久!"
else:
format = ‘‘‘###‘‘‘的作用:注释和格式化输出###
主机信息
主机名:%s
IP:%s
使用年限:%d
CPU:%s
Memony:%s
manager_name:%s
‘‘‘ %(hostname, ip, used_year, CPU, Memory, manager_name)
print format
测试结果:
/usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/1.py
hostname:example.com
ip:172.25.254.138
used_year:4
CPU:i5
Memory:4G
manager_name:root
主机信息
主机名:example.com
IP:172.25.254.138
使用年限:4
CPU:i5
Memony:4G
manager_name:root
Process finished with exit code 0
###变量###
由字母数字和下划线组成,但不能以数字开头
变量是内存中的一块区域。
a **= 3 ---> a=a^3
面试题常见问题:简要描述Python的垃圾回收机制(garbage collection)。
Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会消失,分配给该对象的
内存就会释放出来用作他用。
PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用
它的对象被删除,它的ob_refcnt就会减少.引用计数为0时,该对象生命就结束了
###运算符与表达式###
赋值运算符:=, +=, -=, /=, *=, %=
算术运算符:+, -, , /, //, %, *
关系运算符: >, >=, <, <=, !=, ==
布尔值:1 < 2,返回一个布尔类型的结果
逻辑运算符:逻辑与and, 逻辑或or, 逻辑非not
练习:
编写一四则表达式,(if语句实现)
#!/usr/bin/env python
#coding:utf-8
from __future__ import division###引入一个模块,使得除法的操作不管输入整数还是小数,都得到正确的结果###
_author_ = "xiao"
‘‘‘
@author:xiaowenya
@file:2.py
@contact:1097667868@qq.com
@time:6/25/173:48 PM
@desc:
‘‘‘
num1 = input("num1:")
operate = raw_input("operate:")
num2 = input("num2:")
if operate == ‘+‘:
result = num1 + num2
print result
elif operate == ‘-‘:
result = num1 - num2
print result
elif operate == ‘*‘:
result = num1 * num2
print result
elif operate == ‘/‘:
result = num1 / num2
print result
else:
print "please input ‘+‘ ‘-‘ ‘*‘ ‘/‘"
输出结果:
/usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/2.py
num1:4
operate:+=
num2:4
please input ‘+‘ ‘-‘ ‘*‘ ‘/‘
Process finished with exit code 0
/usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/2.py
num1:5
operate:/
num2:3
1.66666666667
Process finished with exit code 0
###字符串索引###
In [1]: a = ‘hello westos‘
In [2]: a[1]###a[0]才是指h###
Out[2]: ‘e‘
In [3]: a[-1]
Out[3]: ‘s‘
In [4]: a[0]+a[4]
Out[4]: ‘ho‘
###字符串切片###
In [5]: a[0:4:1]###指取出a[0]到a[3]的字符###
Out[5]: ‘hell‘
In [6]: a[0:4:2]
Out[6]: ‘hl‘
In [7]: a[-4:-1:1]
Out[7]: ‘sto‘
In [8]: a[-4:-1:-1]
Out[8]: ‘‘
In [9]: a[-1:-4:-1]
Out[9]: ‘sot‘
In [10]:
python基础