Python学习笔记

您所在的位置:网站首页 python中有get函数吗 Python学习笔记

Python学习笔记

2023-07-16 10:27| 来源: 网络整理| 查看: 265

一、函数

1、内建函数

输入dir(__builtins__)前后两个下划线,可以查看python异常名,属性名和内建函数;

输入help(函数名),可查看函数使用方法。

(1)常用内建函数

1)abs()

求一个数的绝对值。

>>> a=-10 >>> print(abs(a)) 10

2)divmod()

返回一个元组、同时计算商和余数。

>>> a,b=divmod(10,3) >>> print(a,b) 3 1

3)round()

对浮点数进行四舍五入,round有两个参数,第一个是要进行运算的值,第二个是要保留小数点后多少位。

>>> import math >>> for i in range(0,10): print(round(math.pi,i)) 3.0 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654

(2)字符串常用函数

1)join()

字符串合并和拆分,通过一个字符,将列表合并成字符串。

>>> b='-'#可以为任意字符 >>> a=['aa','bb','cc','dd'] >>> print(b.join(a)) aa-bb-cc-dd

2)split()

将一个字符串拆分成一个列表,要有相同特点才能拆分。

>>> a='aa-bb-cc-dd' >>> print(a.split('-')) ['aa', 'bb', 'cc', 'dd']

3)startwith()和endswith()

判定字符串的开头和结尾。

>>>a='hello world my name is hupo' >>>print(a.startwith('hel')) >>>print(a.endswith('world')) True False

4)strip()

去除字符串开头结尾的空格或制表符。

>>>a=' hello world' >>>print(a.strip()) hello world

5)ljust()、rjust()、center()

左对齐、右对齐和中间对齐。

>>> a='hello world' >>> print(a.ljust(20,'*'))#总长度20,不够用*来补足 hello world********* >>> print(a.rjust(20,'*')) *********hello world >>> print(a.center(20,'*')) ****hello world*****

6)find()

查找子串,返回的是要查询的子串的起始位置在字符串中的下标,如果返回-1,就代表找不到。

>>>a='hello world' >>>print(a.find('world')) 6

7)replace()

替换字串,字符串值不可变对象,只能生成新字符串。

>>> a='hello python' >>> print(a.replace('python','world')) hello world >>> a 'hello python'

(3)列表常用函数

1)append()

追加元素,在最后面,可以对空列表追加。

a=[1,2] a.append(3) print(a) [1,2,3]

2)del()

按下标删除元素。

a=[0,1,2] del a[0] print(a) [1,2]

3)remove()

按值删除元素。

a=[1,2,3] a.remove(1) print(a) [2,3]

2、标准库函数

一般的Python环境都支持,使用时将模块导入即可使用。

(1)math库函数

import math#导入库 dir(math)#查看库函数 help(math.pi)#查看函数使用方法 math.ceil#向上取整 math.floor#向下取整 math.pow(2,3)#求x的y次方 math.sqrt(10)#开方 math.degress#将弧度转成角度 math.radians#将角度转成弧度

(2)os库函数

import os os.getcwd#返回当前绝对路径 os.chdir(path)#修改路径 os.rename(文件名,文件名)#修改文件名字 os.remove(文件名)#删除文件

(3)random库函数

import random random.choice(列表)#从序列中获取一个随机值 random.randint(1,100)#生成1到100随机整数 random.randrange(0,10,2)#从range生成的一组数中获取一个随机整数 random.random()#生成0到1.0随机浮点数 random.uniform(5,10)#生成5到10之间的随机浮点数 random.sample(range(100),10)#从给出的序列随机获取10个数,返回一个列表 random.shuffle(列表)#将列表中的顺序打乱

(4)datetime库函数

from datetime import date date.today()输出今天日期 from datetime import time tm=time(23,20,50) print(tm) 23:20:50 from datetime import datetime dt=datetime.now()#输出当前日期和时间 print(dt) 2020-05-09 09:31:28.638930 print(dt.strftime(‘%a,%b,%d,%Y,%H:%M’)) Sat,May,09,2020,09:31 #%a本地简化的星期名称,%A本地完整的星期名称 dt=datetime(2020,5,9,9,37) td=dt.timestamp() timestamp()#将一个datetime转化成全球统一的时间戳 fromtimestamp()将时间戳转成本地的日期和时间 #(时间戳:在计算机中,把1970年1月1日0时0分0时区的时刻称为新纪元时间,记为0,当前的时#间就是从新纪元时间开始计算的秒数,就称之为时间戳)

3、第三方库函数

需要先安装,再导入才能使用。

4、用户自定义函数

一些可以被重复使用的代码,可以提取出来放到函数中。

(1)定义方法

def 函数名(参数): ‘DocString文档字符串,作为函数的注释’ 代码块 return 结果 def Add(x,y): return x+y #调用函数: print(Add(1,2))

注意:相同名字的函数,后面的会覆盖前面的。

(2)形参和实参

类比于数学上的函数,形参相当于数学中的“未知数”,实参就是给未知数确定具体的值。

def money(name,salary): salary=int(salary) money=salary*(1-0.05-0.08-0.02) print('亲爱的%s你好,你本月实发工资是'%name,money) name=input('你的名字:') salary=input('你的工资是:') money(name,salary)

(3)参数设置

1)默认参数

函数的参数可以有一个默认值,在函数定义的时候,默认参数以赋值语句的形式给出;

默认参数的值可以修改;默认参数要放到参数列表最后面;按照需求来设置,可以不设置。

2)关键字参数

关键字参数是让调用者通过使用参数名区分参数;调用函数时,允许改变参数列表中的参数顺序。

一旦使用了关键字参数,所有的参数必须使用关键字参数。

>>>def f(x,y) if y: print(x,’and y both correct’) print(x,’is OK’) >>>f(68,False) 68 is OK >>>f(y=False,x=68) 68 is OK >>>f(y=False,68) SyntaxError >>>f(x=68,False) SyntaxError

3)传递参数

把函数名当成参数传递给另一个参数。

>>>def addMe2Me(x) return x+x >>>def self(f,y) print (f(y)) >>>self(addMe2Me,2.2) 4.4

(4)不确定传几个参数

1)一个星号

n个参数之间可以使用使用 ‘\t’.join()方法(\t可以换成其他任意符号)用于将序列中的元素以指定的字符连接生成一个新的字符串。

def Log(prefix,*data): print(prefix + '\t'.join(data)) Log('[Notice]','hello','world')

2)2个星号

通过在参数名前加两个星号**,星号后面的部分表示传入的参数是一个字典,这时可以按照关键字参数的方式传参;

def Log(prefix,**data): print(prefix + '-'.join(data.values())) Log('[Notice]',ip='127.0.0.1',port='80',userid='1234')

(5)return

如果需要函数返回值,并且保存返回的值 ,则需要加return。

返回多个参数时,默认返回一个元组。

>>>def yunsuan(x,y): z=x*y*2 a=z-2 b=a*2 return z,a,b >>>print(yunsuan(4,5)) (20,22,19) >>>t1,t2,t3=yunsuan(4,5) >>>print(t1) >>>print(t2) >>>print(t3) 20 22 19

(6)作用域

函数里面的变量,出了函数是否还能使用?

def,class会改变变量的作用域。

if,else,elif,while,for,try不会改变变量的作用域。

for I in range(0,10):    print(i) print(i)

即使出了for循环,变量i仍然能访问到变量。

def fun():    x=1 print(x)

出了def的函数语句块,就不能再访问到变量x;

全局变量:程序主体部分的变量;

局部变量:函数中的变量;

全局变量和局部变量同名:内层屏蔽外层。

改变全局变量的值:

global关键字为在函数外的变量赋值,强调全局变量。

def f(x): global a print(a) a=5 print(a+x) a=3 f(8) print(a) 3 13 5

一般要求:内部的聚合性要强,和外部的耦合性要弱。

聚合:内部模块之间的关联程度;耦合:模块与模块之间的关联程度。

(7)默认值

函数可以给默认值,如果传了值,就是用传的值,不传值,就是用默认值。

def say(word=’hello,nice to meet you’): print(word) say() say(1) hello,nice to meet you 1

(8)文档字符串

单行注释使用#表示,多行注释使用三引号(’’’/’’’)表示;

在函数或类开始的位置,进行多行注释(称之为文档字符串)对函数进行解释说明,帮助使用者了解函数使用。

使用对象的doc属性就能查看帮助文档,或者使用内建函数help也能查看;

文档字符串一定要放在函数/类的开始位置,否则无法用_doc_或者help来访问。

>>> def Add(x,y): '''define function for add two''' return x+y >>> help(Add) Help on function Add in module __main__: Add(x, y) define function for add two

(9)lambda函数(匿名函数)

#普通函数方式: >>>def addMe2Me(x): return x+x #lanbda函数: >>>addMe2Me=lambda x:x+x >>>addMe2Me(5) 10 >>>addMe2Me(5) 10

def addMe2Me(x) :rerurn x+x——>lambda  x:x+x——>addMe2Me=lambda x:x+x

二、类

1、抽象的概念

抽象是指对现实世界问题和实体的本质表现、行为、特征进行建模,抽象的反义词时具体。

抽象的本质,是抓住重点关注的问题,而忽略不需要关注的细节。

拿建房子举例:类就相当于施工图纸,里面有房子的重要信息(户型、面积、朝向、层高等),实例就是造好的房子。

通过一张图纸可以建造处N个相同歌剧的房子,那么这N个实例都是属于同一个类。

2、类中定义方法

在类的内部,使用def关键字来定义一个方法,与一般的函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是类的实例。

#创建一个新的类 class Tester(): '我的第一个类' a='tester' def test(self): return 'hello python' #实例化类: x=Tester() #访问类的属性和方法 print("Tester类的属性a为:",x.a) print("Myclass类的方法test输出为:",x.test()) #执行结果: Tester类的属性a为: tester Myclass类的方法test输出为: hello python

3、类的_init_()方法 类有一个名为_init_()的特殊方法(构造方法),该方法会在实例化类时调用。

class my_first_class(): def __init__(self,name,age): '''谁实例化,谁就是self''' self.xingming=name self.nianling=age a='hello teacher' def introduce(self): print('hello everyone','my name is '+self.xingming) print('my age is',int(self.nianling)) hupo=my_first_class('hupo',23)#此时hupo就是_init_的self hupo.introduce()

三、模块

1、定义

当代码量比较大时,最好将代码拆分成一些有组织的代码片段,每个代码片段包含一组逻辑上有关联的函数或类,每个片段放在一个独立的文件中,这样的片段称之为模块。

一个完整的Python文件既是一个模块。

2、导入方式

import 模块名

导入之后,模块中的内容可以直接使用,不需要自定义。

模块也是一个对象,也可以给这个对象赋值(相当于定义别名)。

import os.path as p

3、导入多个模块

import 模块1,模块2...

4、导入模块指定属性

如果需要模块中的某一个或几个函数,使用from-import。

from 模块 import 属性名

from os.path as exists print(exists(‘text.py’))

5、特殊标识符

Python使用下划线(_)作为变量的前缀和后缀,来表示特殊的标识符。

_XXX表示一个“私有变量”,使用from module import *无法导入。

_XXX_(前后一个下划线),__xxx___(前后两个下划线)一般是系统定义的名字,在给变量命名时,尽量不要使用。

6、导入和加载

在import module时,首先是将这个模块的文件加载到内存中,并创建一个对象来表示,然后通过一个变量名来将这个模块引入到当前的命名空间中。

如果一个模块被import了多次,其实加载动作只进行了一次,执行动作也只进行了一次。

importlib.reload(module)重新加载模块。

四、库

库就是一组具有相关功能的模块的集合。

五、包

1、定义

一个由模块和子包组成的Python应用程序执行环境,是一个有层次的文件目录结构。

包就是一个文件夹,可以有很多模块,当代码量太大,拆分成模块时已经不足以满足需求,还需要按照一定的目录结构层次化的组织这些模块,就称之为包,包可以解决模块之间名字冲突的问题。

在目录中增加一个_init_.py文件,这个目录就变成了包,_init_.py是在包加载的时候会执行,负责一些包的初始化操作。

目录结构:

AAA/

   _init_.py

   bbb.py

   CCC/

      _init_.py

      c1.py

      c2.py

AAA就是包,CCC是子包,c1,c2是模块。

2、调用方法

from package import module from package.module import def 导入:import AAA.CCC.c1 使用:AAA.CCC.c1.func1(123) 导入:from AAA.CCC.c1 import func1 使用:func1(123)

六、几者之间的关系

包是包含了模块和库,模块和库包含了函数和类。

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3