chapter 8 函数

1、定义函数

在Python中,使用关键字def 来告诉Python你要定义一个函数。关键字后面跟函数名。

def function():   # def 是定义函数的关键字 function是函数名,最后的一定括号不能少
    print('Hello World!')   # 这一句是函数体

1.1 无参函数

就是不带参数的函数,所有的工作,在调用函数之后,函数自己完成。

def print_message():
    print('Hello World!')

print_message()   # 这是函数的调用

输出是:

1.2 位置实参

参数可以是任意Python支持的类型,如:字符串、数字、列表、元组、字典、结构体、类对象等

def print_message(name, age):  # 这里的 name 和 age 叫做形式参数(形参)
    print('My name is ' + name + ', ' + 'i am ' + str(age) + ' years old.')

print_message('Howe', 18)      # 这里的 ‘Howe’ 和 18 是实参,就是实际传入函数的参数 ‘Alice’ 和 12 也是实参
print_message('Alice', 12)     # 之所以称为位置参数,是因为实参的位置必须和函数定义时形参的位置对应,否则会出现一些意想不到的错误,就像 ‘Howe’ 对应 name,18 对应 age

输出是:

1.3 关键字实参

def print_message(name, age):
    print('My name is ' + name + ', ' + 'i am ' + str(age) + ' years old.')

print_message(name = 'Howe', age = 18)
print_message(age = 12, name = 'Alice')  # 以关键字的形式传入的实参不需要注意位置的问题

输出是:

1.4 默认值(缺省值)

def print_message(name, age=18):  # 在定义函数的时候,给定形参一个默认值  所有的参数都可以设置默认值
    print('My name is ' + name + ', ' + 'i am ' + str(age) + ' years old.')

print_message('Howe')
print_message('Alice')              # 若调用的时候不指定那个实参的值,则会传入默认值
print_message('Alice', 12)

输出是:

1.5 等效的函数调用

def print_message(name='Howe', age=18):
    print('My name is ' + name + ', ' + 'i am ' + str(age) + ' years old.')

print_message()
print_message('Howe')
print_message(age = 18)
print_message(name = 'Howe')
print_message('Howe', 18)
print_message(age = 18, name = 'Howe')

输出是:

1.6 传递任意数量的实参

有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。

 

def members(*names):   # *names 中的*让Python把names看作是一个空元组,注意是元组
    print(names)

members('Howe')
members('Howe', 'Alice')
members('Howe', 'Alice', 'Ben')

输出是:

 

2、返回值

返回值的类型也和形参一致,Python支持的都也返回。也可以有多个返回值

def full_name(first, last, middle=''):   # middle 默认为空
    if middle:
        name = first + '.' + middle + '.' + last
    else:
        name = first + '.' + last
    return name

my_name = full_name('Howe', 'Lee')     # my_name 用来接收存储函数的返回值
print(my_name)
my_name = full_name('J', 'Rowling', 'K')
print(my_name)

输出是:

3、将函数存储在模块中

3.1 导入整个模块

首先创建operation.py,并定义两个函数  

def Addition(left, right):
    result = left + right
    return result

def Subtraction(left, right):
    result = left - right
    return result

然后在operation.py的同级目录再创建一个main.py

import operation

result = operation.Addition(2, 3)     # 在调用模块里面的函数时,要使用 模块名. 的形式
print(result)
result = operation.Subtraction(5, 1)
print(result)

输出是:

3.2 导入特定的函数

from operation import Addition   

result = Addition(2, 3)   # 这里不需要加 模块名.
print(result)

3.3 使用 as 给函数指定别名

from operation import Addition as fn

result = fn(2, 3)    # 这里也不需要加 模块名.
print(result)

3.4 使用 as 给模块指定别名

import operation as fn

result = fn.Addition(2, 3)  # 注意这里的调用方式
print(result)

3.5 导入模块中的所有函数 

from operation import *   # 注意关键字的使用

result = Addition(2, 3)   # 注意调用方式
print(result)

4、函数编写指南

编写函数时,需要牢记几个细节。应给函数指定描述性名称,且只在其中使用小写字母和下划线。描述性名称可帮助你和别人明白代码想要做什么。给模块命名时也应遵循上述 约定。


每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。文档良好的函数让其他程序员只需阅读文档字符串中的描述就能够使用 它:他们完全可以相信代码如描述的那样运行;只要知道函数的名称、需要的实参以及返回值的类型,就能在自己的程序中使用它。


给形参指定默认值时,等号两边不要有空格:

def function_name(parameter_0, parameter_1='default value')

对于函数调用中的关键字实参,也应遵循这种约定:

function_name(value_0, parameter_1='value')

PEP 8(https://www.python.org/dev/peps/pep-0008/ )建议代码行的长度不要超过79字符,这样只要编辑器窗口适中,就能看到整行代码。如果形参很多,导致函数定义的长度超过了 79字符,可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来。


大多数编辑器都会自动对齐后续参数列表行,使其缩进程度与你给第一个参数列表行指定的缩进程度相同:
 

def function_name(
        parameter_0, parameter_1, parameter_2,
        parameter_3, parameter_4, parameter_5):
    function body...

如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开,这样将更容易知道前一个函数在什么地方结束,下一个函数从什么地方开始。 所有的import 语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序。
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《随机信号分析》(Chapter 6)是王永德编写的一本关于随机信号分析的教材,该章节的主要内容是关于信号的功率谱密度函数(PSD)的分析。 在信号处理领域,随机信号是一种在时间和幅度上都是随机变化的信号。对于随机信号的分析,其中一个重要的概念就是功率谱密度函数。功率谱密度函数可以用来描述信号的功率在频域中的分布情况,是信号在不同频率上的功率密度。 在第6章中,王永德首先介绍了图像的基本概念,包括平均值、自相关函数等。然后,他引入了功率谱密度函数定义,并介绍了如何通过傅里叶变换将信号从时域转换到频域。接着,他详细讲解了如何计算信号在频域上的功率谱密度函数,并给出了一些常见信号的功率谱密度函数的例子。 在随后的内容中,王永德还介绍了如何通过对随机信号的平均值和自相关函数进行估计来估计功率谱密度函数。他解释了如何使用周期图和Welch方法来估计功率谱密度函数,并介绍了这些方法的优缺点。 最后,王永德还介绍了一些关于功率谱密度函数的统计性质,包括自相关函数与功率谱密度函数的傅里叶变换关系以及功率谱密度函数的线性性质等。 总的来说,通过《随机信号分析》(Chapter 6)这一章节的学习,读者可以了解到随机信号分析中功率谱密度函数的基本概念、计算方法及其在信号处理中的应用,为进一步深入学习随机信号分析打下了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值