python编程基础-学习笔记入门篇-函数、流程控制、文件与异常

3.函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

3.1内置函数

内置函数便是指python自带的直接拿来用的函数,即使我们在调用这个函数前,没有定义,也能使用。比如print(),input(),详情请参照python的官方文档。

3.2自定义函数

函数代码块以‘def’关键词开头,后接函数名称和圆括号;
任何传入参数和自变量必须放在圆括号中间,
return[ ]结束函数,选择返回一个值,不带表达式的return相当于返回 None。

关于函数名称:
1.名称不能以数字开头,能开头的只有大小写字母与下划线_
2.名称中不能有空格,一般用下划线_连接词汇
3.名称不能与关键字重合,列出所有关键字可用‘keyword.kwlist’。

3.3函数参数

① 必需参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样,不能省略。

② 关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

③ 默认参数

调用函数时,如果没有传递参数,则会使用默认参数。在我们日常编写程序中,大部分的函数都是具有很多参数,但如果我们每一个都定义则会使代码变得很长,因此我们便会使用默认参数。

④ 不定长参数

一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,一般是用乘号*引入。举个例子

def printinfo(a, *b):
	print (a)
	print (b)
printinfo(1,2,3)
>>>输出:1
>>>     (2,3)

3.4 匿名函数

匿名函数通过lambda来创建,lambda只是一个表达式,比def要简单很多。匿名函数是一个非常灵活的函数,通常与apply,map等结合使用。

#用lambda写函数,冒号前是传入参数,冒号后是操作
a=lambda x,y : x+y
a(1,2)#输出3
#上面的代码等价于:
def a(x,y)
	return x+y
a(3,5)

#与apply或map结合使用,apply用于dataframe的行或列,map用于series的每一个元素,applymap用于dataframe的每一个元素。具体请参照python官方文档。
df=tables['a'].apply(lambda x:0  if x!=1 else 1)
df
#这段代码的意思是把tables表中名为‘a’的列遍历,如果其中的值不等于1,则令其为0,否则为1。

4.流程控制

4.1 if条件语句

if 条件语句是通过一条或多条语句的执行结果是True 还是 False来决定执行的代码块。写IF条件语句时一定要注意缩进。

# 如果condition_1成立,执行statement_1
if condition_1:
	statement_1
# 否则如果contidion_2成立,执行statement_2
elif condition_2:
    statement_2
# 都不成立执行statement_3
else:
	statement_3
4.2 while循环

while循环是以条件为基础的循环,只要条件表达式为True,while所控制的内容就会一直循环,以斐波那契数列为例:

a=0,b=1
n=100
while a<n:
	print(a,end='')
	a,b=b,a+b

该代码输出100以内的斐波那契数列,只要a小于100,while语句就会一直执行。

4.3 for循环

for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环是以集合为基础的循环。python中一般使用range函数进行遍历:
range(start,end,step):start与step参数默认值为0,可省略,遍历从start开始,以step为步长,到end-1结束。

fruits = ["apple", "banana", "orange"]
for i in fruits:
    print(i)

输出结果为:

apple
banana
orange

5.文件读写

5.1 新建文件

python内置函数open()创建一个新文件

open(file, mode='r')# 创建一个新文件
# 参数file:文件的本地路径
# 参数mode:打开方式。r:只读,w:写入,+:读写,b:二进制

# 以写入的方式打开文件,输出文件名,并关闭文件
file_f = open('文件路径', 'w')
print(file_f.name)
file_f.close()#用open打开记得要关闭
5.2 删除文件

删除文件需要用到os库

import os
# 若文件存在则删除文件,否则会报错
#删除文件前文件必须关闭了,要是不确定,可以先打开再关闭。
if os.path.exists(file_f.name):
    os.remove(file_f.name)
    print('{0} deleted.'.format(file_f.name))
else:
    print('{0} does not exist.'.format(file_f.name))
5.3 读写文件

创建文件之后,我们可以用 f.write() 把数据写入文件,也可以用 f.read() 读取文件。
其中open()函数的第二个参数表示指定文件的打开模式。默认值为 “r”,表示以只读方式打开文件。常用的模式包括:
      “r”:只读模式
      “w”:写入模式(如果文件已存在,则覆盖原内容)
      “a”:追加模式(如果文件已存在,则在末尾添加新内容)
      “x”:独占创建模式(仅在文件不存在时创建文件,如果文件已存在,则抛出错误)

# 遍历文件每一行读取
file_f= open('文件路径', 'r')
for line in file_f:
    print(line)
file_f.close()


# 一次性读取文件
re_file_f = open('文件路径', 'r')
content = re_file_f .read()
print(content)
re_file_f .close()

同样也可以使用使用.readlines()函数将文件内容逐行读取,这类方法通常用来打开txt文件。使用此类方法打开文件读取后必须使用.close()将文件关闭,以释放系统资源。也可以使用with语句快速关闭文档.

with open("文件路径", "r") as file_f:
    content = file_f.read()

实际在数据分析中,更多的是使用pandas库进行文件的读取。

import pandas as pd
#若读取文件为excel文件
dataframe1  = pd.read_excel("filename.xlsx")
#若读取文件为csv文件
dataframe2 = pd.read_csv("filename.csv")

它有许多参数,下面列出一些常见参数:
   pd.read_excel() 的主要参数:

io:指定要读取的 Excel 文件的路径或 URL。
sheet_name:指定要读取的工作表的名称或索引。
header:指定数据起始行的索引。(默认为0,表明表的第一行就为每列的列名)
index_col:指定要用作行索引的列的编号或名称。
usecols:指定要读取的列的编号或名称。
dtype:指定每列的数据类型。
parse_dates:指定需要解析为日期的列。
na_values:指定字符串列表或字典,将指定的值视为缺失值。
converters:指定自定义转换函数。

   pd.read_csv() 的主要参数:

filepath_or_buffer:指定要读取的 CSV 文件的路径或 URL。
sep:指定字段分隔符,默认为逗号(,)。
header:指定数据起始行的索引。
index_col:指定要用作行索引的列的编号或名称。
usecols:指定要读取的列的编号或名称。
dtype:指定每列的数据类型。
parse_dates:指定需要解析为日期的列。
na_values:指定字符串列表或字典,将指定的值视为缺失值。
converters:指定自定义转换函数。
encoding:编码方式。

这两个函数大部分参数都一样,需要注意的是,csv文件读取时有个sep参数,默认为‘,’。
还有一些比较实用的参数

data= pd.read_csv(r"data.csv",encoding='gbk',skiprows=4, skipfooter=4)

Skiprows=4表示跳过前四行读取
Skipfooter=4表示跳过后四行读取
encoding='gbk’则表示文件编码方式为ANSI

7.异常处理

调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。

# 异常处理常用语句
try:
    statement_try#首先,执行try子句statement_try,若无异常,则忽略except子句,若异常,那么try子句余下的部分将被忽略。
except Exception:
    statement_error#如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
finally:
    statement_finally# 无论 try 子句里面有没有发生异常,finally 子句都会执行。

一个try语句可能包含多个except语句。
一个except语句可以同时处理多个异常。

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九七不会用python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值