初识函数及文件操作

1. 函数的基本作用

  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

函数式编程最重要的是增强代码的重用性和可读性

2. 定义和使用

def 函数名(参数):

...

函数体

...

返回值

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据

return值是用来给调用者的。

在函数中,一旦执行了return,函数执行过程立即终止。

在未设置return值得时候,自动返回none。

3.参数

(1)普通参数(严格按照顺序,将实际参数赋值给形式参数)

(2)默认参数(必须放到最后)

(3)指定参数(将实际参数赋值给制定的形式参数)

(4)动态参数

*  默认将传入的参数,全部放置在元组中(以元组传入)

**默认将传入的参数,全部放置在字典中(以字典传入)

def f1(*args): #
print(args,type(args))

li = [11,22,'hahah']
f1(li)
f1(*li)
结果:

([11, 22, 'hahah'],) <class 'tuple'>
(11, 22, 'hahah') <class 'tuple'>

def f1(**args): # 以字典传入
print(args,type(args))
f1(n1="haha", n2=18)
dic = {'k1':'v1','k2':'v2'}
f1(kk=dic)
f1(**dic) # 直接赋值args
结果:

{'n2': 18, 'n1': 'haha'} <class 'dict'>
{'kk': {'k2': 'v2', 'k1': 'v1'}} <class 'dict'>
{'k1': 'v1', 'k2': 'v2'} <class 'dict'>

(5)万能参数  *args在前  **kwargs在后

image

str format 格式化输出

s1 = "I am {0}, age{1}".format('haha', 18)
print(s1)
s2 = "I am {0}, age{1}".format(*['haha', 18])
print(s2)
结果:

I am haha, age18
I am haha, age18

s1 = "I am {name}, age{age}".format(name='haha', age=18)
print(s1)
dic = {'name': 'haha', 'age':18}
s2 = "I am {name}, age{age}".format(**dic)
print(s2)
结果:

I am haha, age18
I am haha, age18

 

函数参数传递说明:传递的是引用值。即同一值在内存中,只有一个位置

def f1(a1):
a1.append(999)

li = [11,22,33,44]
f1(li)
print(li)
结果:
[11, 22, 33, 44, 999]
全局变量,所有的作用域都可读优先使用自己域中
对全局变量进行重新赋值,需要global
特殊:列表、字典。可修改,不可重新赋值
全局变量----大写

4. 小细节

函数与函数之间加两行空格------PEP8

读取文件每一行的时候 加上.strip()--去掉换行符及空格

5. 三元运算/三目运算

if 1==1:
name = 'alex'
else:
name = 'hahah'
等同:

name = 'alex' if 1 == 1 else 'hahah'

6. Lambda表达式

针对简单赋值函数,简化

def f1(a1):
return a1 + 100
等同:

f2 = lambda a1: a1 + 100

7. 内建函数

[], '', 0, False
all() # 里面每一个均为真,则为真,有一个为假,则为假

any()  # 只要有真,则为真

bin()  # 将传进去的10进制转为2进制  0b—>二进制

oct()  # 转为8进制  0o—>八进制

hex()  # 转为16进制  0x—>十六进制

字符串转换字节类型

bytes(只要转换的字符串,按照什么编码)

n = bytes("李杰", encoding="utf-8")
print(n)
n = bytes("李杰", encoding="gbk")
print(n)

字节转化成字符串

new_str = str(bytes("李杰", encoding="utf-8"), encoding="utf-8")

8. 文件操作

f = open("db", 'r+', encoding = "utf-8")

# 如果打开模式为r+,无b,则read按照字符读取

f.tell()

# tell当前指针所在的位置(字节—>一个汉字,三个字节

f.seek()

# 调整当前指着的位置(字节

f.seek(f.tell())

# 当前指针位置开始覆盖

 

f.flush()  # 强制刷新

f.truncate()  # seek位置,清空后面数据

posted @ 2016-09-30 21:31  青苹之末  阅读(160)  评论(0编辑  收藏  举报