[TOC]
练习
- 查看内置函数
max() 的使用方法,并尝试输出。
- 编写一个名为
max() 的函数,该函数可以输入一个列表,但仅返回字符串“我们新建的 max 函数”,并对其调用,查看输出。
- 寻找至少10个内置函数名称或关键字
max([1, 2, 99, -3])
def max(a_list): return "我们新建的 max 函数"
max([1, 2, 99, -3]) ''' abs() # 求绝对值 input() # 从命令行读入 str() # 转化为字符串 int() # 转化为整数 float() # 转化为浮点数 list() # 转化为列表 len() # 获取长度 range() # 生成指定序列 sum() # 序列求和 min() # 序列求最小值 max() # 序列求最大值 '''
|
练习
- 根据之前已经编写过的代码新建
open_dataset() 函数,设置 iOS app 数据集的文件地址 AppleStore.csv 为该函数file_name形参的默认形参。
- 在不传入任何实参的情况下,使用
open_dataset() 函数打开 AppleStore.csv 文件。
- 运行代码后,请检查是否一切都按预期进行,你可以尝试打印前几行。
from csv import reader
def open_dataset(path='assets/dataset/AppleStore.csv'): return list(reader(open(path)))
apps = open_dataset() for line in apps[0:3]: print(line)
|
练习
根据之前已经编写过的代码修改 open_dataset() 函数,要实现以下功能:
- 支持用户自己选择是否要返回数据集的表头,是否要返回数据集内容
- 若用户想要返回标题行,判断要读取的数据集是否包含标题行,如果有则支持返回,若无则返回 error: don’t have title
- 若用户想要返回数据集内容,则以包含列表的列表的形式返回新数据集
from csv import reader
def open_dataset(path='assets/dataset/AppleStore.csv', has_title=True): if has_title: return list(reader(open(path))) else: return list(reader(open(path)))[1:]
apps = open_dataset(has_title=False) for line in apps[0:1]: print(line) apps = open_dataset(has_title=True) for line in apps[0:1]: print(line)
|
练习
根据之前已经编写过的代码修改 open_dataset() 函数,要实现以下功能:
- 支持用户自己选择是否要返回数据集的表头,是否要返回数据集内容
- 若用户想要返回标题行,判断要读取的数据集是否包含标题行,如果有则支持返回,若无则返回 error: don’t have title
- 若用户想要返回数据集内容,则以包含列表的列表的形式返回新数据集。
- 支持用户既返回标题行,又要返回数据集内容
from csv import reader
def open_dataset(path='assets/dataset/AppleStore.csv', has_title=True): if has_title: return list(reader(open(path)))[0], list(reader(open(path)))[1:] else: return None, list(reader(open(path)))[1:0]
title, body = open_dataset() print("title is " + str(title)) print("body is "+str(body[0:2]))
|
练习
创建一个名为 exponential() 的函数,该函数接受一个名为x的单个参数。
- 在函数定义内:
- 函数需要返回e的x次幂。
- 调用
exponential() 函数,输入参数为5,并将结果分配给 result 。
- 先思考你调用
exponential() 函数后会得到什么数据,想好后通过打印e来验证。
import math
def exponential(x): e = 2.72 print("e is %f" % e) return math.pow(e, x)
result = exponential(5) print(result)
|
语法
- 使用默认参数初始化参数:
def add_value(x, constant=3.14): return x + constant
|
- 使用多个
return 语句:
def sum_or_difference(a, b, do_sum): if do_sum: return a + b return a - b
|
- 返回多个变量:
def sum_and_difference(a, b): a_sum = a + b difference = a - b return a_sum, difference sum_1, diff_1 = sum_and_difference(15, 10)
|
概念
- 我们需要避免使用
Python 内置函数的名称来命名函数或变量,因为这会覆盖内置函数。
- 每个内置函数在
Python 官方文档中都有详细记录,代码编辑器也会以高亮的相似展现。
- 创建函数时,参数和
return 语句不是必需的。
- 仅在调用函数时才执行函数定义中的代码。
- 调用函数时,函数内定义的变量将保存到临时内存中,函数完成运行后会立即被删除,可以实现函数中的临时存储器与与主程序关联的存储器隔离(主程序是功能定义之外的程序的一部分)。
- 程序中可以访问变量的部分通常称为作用域。据说在主程序中定义的变量在全局范围内,而在函数内部定义的变量在局部范围内。
- 如果变量在局部作用域中不可用,
Python 将搜索全局作用域,但相反情况并不适用。如果 Python 在全局范围内找不到变量,则不会搜索本地范围。即使搜索了本地范围,与函数关联的内存也是临时的,因此搜索将毫无意义。