Python-Project-7-学习笔记

[TOC]

练习

  1. 查看内置函数 max() 的使用方法,并尝试输出。
  2. 编写一个名为 max() 的函数,该函数可以输入一个列表,但仅返回字符串“我们新建的 max 函数”,并对其调用,查看输出。
  3. 寻找至少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() # 序列求最大值
'''

练习

  1. 根据之前已经编写过的代码新建 open_dataset() 函数,设置 iOS app 数据集的文件地址 AppleStore.csv 为该函数file_name形参的默认形参。
  2. 在不传入任何实参的情况下,使用 open_dataset() 函数打开 AppleStore.csv 文件。
  3. 运行代码后,请检查是否一切都按预期进行,你可以尝试打印前几行。
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的单个参数。

  • 在函数定义内:
    • 将2.72分配给e。
    • 打印e。
  • 函数需要返回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)

语法

  1. 使用默认参数初始化参数:
def add_value(x, constant=3.14):
return x + constant
  1. 使用多个 return 语句:
def sum_or_difference(a, b, do_sum):
if do_sum:
return a + b
return a - b
  1. 返回多个变量:
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 在全局范围内找不到变量,则不会搜索本地范围。即使搜索了本地范围,与函数关联的内存也是临时的,因此搜索将毫无意义。