Python入门笔记02

二、函数
 
2.1、重新认识函数
PY_notes_02 - Uncle Jay - Uncle Jays blog
     Python 中所谓的使用函数,就是把你要处理的对象放到一个名字后面的括号里。简单来说,函数就是这么使用的,往里面塞东西就可以得到处理结果。
 
- Python 的 内建函数(Built-in Functions)
 
以 Python 3.60 版本为例,一共存在 68 个这样的函数,它们被统称为 内建函数(Built-in Functions)。
之所以被称为内建函数,并不是因为还有“外建函数”这个概念,“内建”的意思是在 Python 3.60 版本安装完成后,你无须创建就可以直接使用这些函数,即 表示这些函数是“自带”的而已。
 
Python 3.60 的 68个 内建函数(Built-in Functions):
 
 
2.2、创建函数
 
- Python 创建函数的格式如下:
 
PY_notes_02 - Uncle Jay - Uncle Jays blog
 
 
 重 点:
  ① def(即 define ,定义)的含义是创建函数,也就是定义一个函数。
  ② 闭合括号后面的 冒号( : )必不可少。
  ③ 函数「缩进」后面的语句被称作 语句块(block),缩进是为了表明语句和逻辑的从属关系,是 Python 最显著的特征之一。(大部分语言会用大括号 { } 来表明这样从属关系)
  ④ return 即返回结果。在 Python 中 return 是可选的,如果没有 return 即函数的返回值为 ‘None’。 
 
☆ 注意:
  ① def 和 return 是 关键字(keyword),Python 就是靠识别这些特定的关键字来明白用户的意图,实现更为复杂的编程。
  ② 在 Python 中 return 是可选的(optional),这意味着你在创建函数时不写 return 也可以顺利地定义一个函数并调用,只不过 返回值 是 ‘None’ 罢了。
  ③ 我们把 使用函数 这种行为叫做“调用”(call)。即 调用函数 。
 
PY_notes_02 - Uncle Jay - Uncle Jays blog
 
# 例子,温度的单位有 摄氏度 和 华氏度 ,已知 摄氏度 与 华氏度 的转化公式为:F = 9/5*C+32 。
# 现在我们创建一个能实现 摄氏度 转化为 华氏度 的函数,并调用该函数实现转化:
 
def temp_converter(c):
return str(9/5*c+32) + '?F'
 
c_in = input('请输入摄氏温度:')
c_in = int(c_in)
f = temp_converter(c_in)
print('华氏温度为:' + f)
 
 
2.3、传递参数与参数类型
 
- 位置参数 与 关键词参数
 
    根据不同传递参数的方式,可以分为:位置参数 (positional argument) 与 关键词参数 (keyword argument)。
 
    在 调用函数 时,根据 该函数被创建时 各参数所在的位置顺序,分别把参数的值按顺序填到对应的位置,这样种传入参数的方式被称作「位置参数 (positional argument)」。
 
    在 调用函数 时,在每个参数名称后面赋予一个我们想要传入的值。这种以名称作为一一对应的参数传入方式被称作「关键词参数 (keyword argument)」。
 
PY_notes_02 - Uncle Jay - Uncle Jays blog
 
# 例子,我们已知 梯形面积的计算公式为:S = (a+b)*h/2
# 创建一个函数,计算梯形面积:
 
def tra_area(a,b,h):
return 1/2 * (a + b) * h
 
print(tra_area(h=3,b=2,a=1)) # -成功,输出:4.5
print(tra_area(h=3,b=2,1)) # -失败!原因:「位置参数」不能在「关键词参数」之后出现!
print(tra_area(a=1,b=2,3)) #  -失败!原因:「位置参数」不能在「关键词参数」之后出现!
print(tra_area(1,2,h=3)) # -成功,输出:4.5
print(tra_area(1,2,b=3)) # -失败!原因:同一个参数不能被重复赋值!
 
☆ 注意:
    ①「关键词参数」可以不考虑位置顺序。
    ②「位置参数」不能在「关键词参数」之后出现!
    ③ 同一个参数不能被重复赋值!
 
# 我们现在给一组变量赋值,然后再调用函数,大家来看结果会有什么变化:
 
a = 1
b = 2
h = 3
print(tra_area(h,b,a)) # 输出:2.5
print(tra_area(h = h,b = b,a = a)) # 输出:4.5
 
☆ 注意:
    在 创建函数 时 设定的参数是「形参」,在 调用函数 时 填入的参数是「实参」,大家要搞清楚这两个概念。
 
- 默 认 参 数
 
    默认参数 就是 函数中某个有默认值的参数。调用函数时就算不给予填入参数,该函数仍然能照常运行。
 
  参数的默认值可以被更改,即 默认参数可以被重新赋值。
 
    给一个参数设定默认值(创建默认参数)非常简单,我们只需要在定义参数的时候给参数赋值即可。如下:
 
def tra_area(a,b,h=3):
return 1/2 * (a + b) * h
 
print(tra_area(1,2)) # 输出:4.5
print(tra_area(1,2,6)) # 给默认参数重新赋值 6,输出:9.0
print(tra_area(1,2,h=6)) # 给默认参数重新赋值 6,输出:9.0
 
 ☆ print()函数的默认参数 sep(用于设定多个打印结果之间的分隔符号)的默认值为‘ ’空格,但是我们可以将其重新设定为‘/n’ 即 换行 。也就是说将每个打印结果以换行符号进行分割。如下:
 
print('  *',' ***','*****','  |',sep='\n')
'''''''''''''''''''''''''''''''''''
以上代码输出:
  *
 ***
*****
  |
'''''''''''''''''''''''''''''''''''
 
 
2.4、设计自己的函数
 
  * 如果你现在困惑 函数 和 方法 到底是什么关系的话,为了顺利地往后进行,我可以告诉你 方法 就是 函数 的一种,只不过在不同的位置而已,使用原理和函数非常相似。
 
# 创建 file_create() 函数,作用:创建文件(尤其是.py文件)
# 该函数共有4个参数:
# namn -文件名
# content -文件内容
# extension -文件扩展名,即 后缀
# path -文件坐在的目录路径
def file_create(name,content,extension='py',path='E:/PY_Test/New/'):
full_path = path + name + '.' + extension
file = open(full_path,'w')
file.write(content)
file.close()
print('文件 ' + name + '.' + extension + ' 已被创建在 ' + path + ' 中。')
 
file_create('test','# hello world') # 调用函数
 
 
# 创建 word_filter() 函数,作用:单词过滤器
# 该函数共有3个参数:
# content -内容
# target_word -要被过滤的单词
# new_word - 替换的单词
# 执行成功 返回 被过滤后的内容(str类型)。
def word_filter(content,target_word='lame',new_word='Awesome'):
return content.replace(target_word,new_word)
 
new_content = word_filter('Python is lame! is very lame!! is very very lame!!!') # 调用函数
print(new_content)
# 输出:Python is Awesome! is very Awesome!! is very very Awesome!!!

 

posted @ 2017-11-12 18:21  Uncle_Jay  阅读(388)  评论(0编辑  收藏  举报