python基础知识

  • python 代码头两行注释

很多时候,我们在一些py脚本文件的开头都能看到类似的以#开头的这样两行代码,它们不是注释,是一些设定

#!/usr/bin/env 
# -*- coding:utf-8 -*-

第一行,用于执行运行该脚本需要的python解释器版本,至少专门在 linux环境下起作用,windows不需要,env方式下系统会自动使用环境变量中的设置的python解释器。还有一种形式,#!/usr/bin/python3.6 这样方式的注释会强制要求系统使用python3.6的解释器来执行该 py 文件,这种方式下,一旦你本地的python3.6 版本删除了,会出现找不到解释器的错误,以上两种方式都是指在linux环境下使用 ./test.py 这种方式来执行脚本时的设置,但是如果在linux环境下使用 python test.py  &

python3 test.py  这种方式来执行 py 文件时,这一行设置就不起作用了;

第二行,用于设置程序本身的字符编码,在python3 中已经全面支持unicode 默认是 UTF-8 的编码,所以我们不用在纠结乱码,所以在python3中,这行设置是不起作用的,但是在python2环境中还是有设置的必要的;

  • 多行语句,当一条语句太长时,可以使用\ (反斜线)实现换行
st = "abc" \
     "def" \
     "ghi" \
     " OK "
print(st)

>>>abcdefghi OK 
使用回车 enter 就可以换行
  • 转义字符 \
转义符 ‘\‘,用来特殊转义,例如\r\n,\\。它可以将引号转义为单纯的引号,没有任何作用的引号。

原生字符串: 通过在字符串前加r或R,如 r"this is a line with \n",表示这个字符串里的斜杠不需要转义,等同于自身。因此,例子中的\n会显示出来,并不是换行。

unicode字符串:加前缀u或U, 如 u"this is an unicode string"。

bytes类型:加前缀b,如b”this is a bytes data”。但是s=b“中文”,这种是不行的!
  • 如何阅读错误调用栈信息
以下面的代码为例:
def foo(s):             #1
    return 10 / int(s)  #2
                        #3
def bar(s):             #4
    return foo(s) * 2   #5
                        #6
def main():             #7
    bar('0')            #8
                        #9
main()                  #10


运行代码后,会弹出如下的错误:

Traceback (most recent call last):
  File "F:/Python/pycharm/201705/1.py", line 10, in <module>
    main()
  File "F:/Python/pycharm/201705/1.py", line 8, in main
    bar('0')
  File "F:/Python/pycharm/201705/1.py", line 5, in bar
    return foo(s) * 2
  File "F:/Python/pycharm/201705/1.py", line 2, in foo
    return 10 / int(s)
ZeroDivisionError: division by zero

这些信息就是错误提示。我们需要从上往下读,英文看起来很复杂,其实很易懂。Traceback...表示追踪错误开始,说在某个位置的1.py文件的第10行中的main这个函数出了问题。那么问题出在哪呢?是1.py文件中的第8行的bar函数调用出了问题,那么出什么问题呢?还没找到根子,又说在第5行,第2行调用出了问题,然后最终发现是return 10 / int(s)这行语句的问题。问题是什么,发生了除零错误!ZeroDivisionError是一个除零异常。到这里,我们恍然大悟,我让10除0了,所以出现错误了,那么就知道怎么改了。其实查找错误,排除错误就是这么简单,只是需要你耐心的一行行地查看错误调用栈,再根据最后的错误类型,就可以判断错误的发生原因并修改错误,没有想象中的那么复杂

  • 常量与变量

变量:在程序运行过程中,值会发生变化的量

常量:在程序运行过程中,值不会发生变化的量

无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值

每个变量在使用前都必须赋值,变量赋值以后才会被创建,新的变量通过赋值的动作,创建并开辟内存空间,保存值。如果没有赋值而直接使用会抛出赋值前引用的异常或者未命名异常。

Python中,一切事物都是对象,变量引用的是对象或者说引用对象在内存中的地址

Python中,变量本身没有数据类型的概念,通常所说的“变量类型”是变量所引用的对象的类型,或者说是变量的值的类型。因为变量指向了这个带类型的对象,所有变量也有了类型;

如何理解变量在计算机内存中的表示呢,当我们创建了一个变量a = 'ABC'时,Python解释器干了两件事情:

1.在内存中创建了一个‘ABC’的字符串对象;

2.在内存中创建了一个名为a的变量,并把它指向'ABC'。

也可以把一个变量a赋值给另一个变量b,这个操作实际上是将变量b指向变量a所指向的对象,

常量就是不变的变量,比如常用的数学常数圆周率就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

常量通常放置在代码的最上部,并作为全局使用

  • python 运算符——算术运算符
Python中,有3种除法;
(1)一种除法是 / ,/ 除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数;
>>> 9 / 3
3.0
(2)还有一种除法是//,也称为地板除,只取整数部分,余数被抛弃;
>>> 10 // 3
3
(3)Python还提供一个余数运算,可以得到两个整数相除的余数;
>>> 10 % 3
1
  • python 运算符——比较运算符

以下假设 a=10 ,b=20

  • python运算符——赋值运算符

以下假设 a=10 ,b=20

  • python运算符——逻辑运算符

Python语言支持逻辑运算符,使用更加人性化的英文单词and or not(全部都是小写字母)。以下假设变量 a 为 10, b为 20

  • python运算符——成员运算符

in 与 not in是Python独有的运算符(全部都是小写字母),用于判断对象是否某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True或者False。

  • python运算符——身份运算符 (全部都是小写字母)

注意is与比较运算符“==”的区别,两者有根本上的区别,切记不可混用,区别如下:

is用于判断两个变量的引用是否为同一个对象,用来判断两个对象的内存地址是否相同;

而==用于判断变量引用的对象的值是否相等;

python内置函数:id(),用它可以查看某个变量或者对象的内存地址,两个相同内存地址的对象被认为是同一个对象。

  • python输入 与 输出
    • input输入函数

input输入函数,获取用户输入,保存成一个字符串。input函数的返回值是一个字符串类型。哪怕你输入的是个数字1,返回给你的只会是字符串“1”,而不是 整数1。

我们不难发现,input函数将我们的输入原样不动的返回给了我们,并包装成一个字符串。这肯定是不行的,会带来很多问题,所以通常我们都需要对用户输入进行处理和判定;

(1)比如对空输入进行处理:
inp = input("请输入你的姓名:  ")
if inp == "":    
    inp = input("姓名不能为空,请重新输入:  ")
(2)比如将字符串转换成数字类型:
age = input("请输入你的年龄:  ")

age = int(age)   # 将字符串转化为整数

if age > 18:
    print("已经成年")
else:
    print("还是未成年")
(3)去除开头的空白lstrip,去除结尾的空白rstrip以及去除两端的空白strip
inp = input("请输入你的姓名:  ")

inp = inp.strip()  # strip的用法在字符串数据类型有讲述

print(inp)
(4)判断输入的字符类型
我们在将字符串转化为整数用的是int()函数,这种方式有危险的,对于形如“123”, “283242”的字符串,转化没问题,但是对于包含字符、特殊字符的字符串就没办法转化了,会弹出异常错误。所以在使用int函数之前,要先对输入进行判断
age = input("请输入你的年龄:  ")

if age.isdigit():   # 使用isdigit函数判断输入是否全是数字格式
    age = int(age)   # 将字符串转化为整数
    print("你的年龄是: ", age)
else:
    print("输入不合法!")
  • print输入函数

print函数用于将内容格式化显示在标准输出上,主要指的是屏幕显示器。

print可以接受多个字符串,每个字符串用逗号“,”隔开,连成一串输出。print会依次打印每个字符串,同时,每遇到一个逗号“,”就输出一个空格。

>>> a='seleniu'
>>> b='appium'
>>> print(a,b)
seleniu appium

print函数的原型:print(self, *args, sep=' ', end='\n', file=None)

sep参数: 分隔的符号,默认是一个空格;

end参数: 打印后的结束方式,默认为换行符\n。如果,设置end='',则可以不换行,让print在一行内连续打印

  • print 格式化输出
>>> print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
我叫 小明 今年 10 岁!
>>> print('我叫{}今年{}岁'.format('小明',10))
我叫小明今年10岁
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值