Python个人随笔-----Python基础语法-----09_函数

Python基础语法

9、函数

9.1、函数的作用

Python个人随笔-----Python基础语法-----09_函数_第1张图片

9.2、函数的组成

Python个人随笔-----Python基础语法-----09_函数_第2张图片

9.3、定义函数

定义一个函数的基本语法(含一些注意事项):

# 函数名:1. 名字最好能体现函数的功能,一般用小写字母和单下划线、数字等组合
#      2. 不可与内置函数重名(内置函数不需要定义即可直接使用)
def 函数名(参数):
# 参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同
# 规范:括号是英文括号,后面的冒号不能丢
    函数体
# 函数体:函数的执行过程,体现函数功能的语句,要缩进,一般是四个空格
    return 语句
# return语句:后面可以接多种数据类型,如果函数不需要返回值的话,可以省略
  • 第1行:def的意思是定义(define),函数名需要自己取,再搭配一个英文括号和冒号,括号里面的是参数(参数名也是自己取)。
  • 第2行:def下一行开始缩进的代码就是函数要实现的功能,也叫【函数体】。
  • return语句是返回的意思,可以指定函数执行完毕后最终会返回什么值或表达式,否则计算机是无法判断出函数最终要输出什么结果的。

这是自己写的一个与Python的内置函数:len()函数,具有相同功能的函数:

def my_len(words):
#函数的参数是字符串
    counter = 0
    for i in words:
        counter += 1
    return counter

a = '这是一个与Python的内置函数:len()函数具有相同功能的函数'
print(my_len(a))
#等价于print(my_len('这是一个与Python的内置函数:len()函数具有相同功能的函数'))

# 》》 33

9.4、函数类型

  • 无参数:
def test():
    print('测试!')
    
test()
# 》》 测试!

  有一些函数直接使用 ‘函数名()’ 调用执行,括号内并没有带参数,原因是这些函数在其内部已经实现了打印的功能,可以直接调用执行,不需要参数的参与。
  需要注意的是,即便是没有参数,我们在调用函数的时候也不能省略括号。

  • 位置参数:
def test(one, two):
    print('测试:' + one)
    print('测试:' + two)

test('一','二')
# 》》 测试:一
# 》》 测试:二

  括号内可以传入多个参数,当有多个参数的时候,我们就必须按照顺序和数量传递。

  • 默认参数:
def test(one, two, three = '三'):
    print('测试:' + one)
    print('测试:' + two)
    print('测试:' + three)

test('一','二')
# 》》 测试:一
# 》》 测试:二
# 》》 测试:三

  直接在定义函数的时候给参数赋值。
  如果一个函数的某个参数值总是固定的,那么设置默认参数就免去了每次都要传递的麻烦。不过默认参数并不意味着不能改变。
  需要注意的是:默认参数必须放在位置参数之后。

  • 不定长参数:
def test(*number):
    return number

order = test('一','二','三')
#括号里的这几个值都会传递给参数number

print(order)
print(type(order))
# 使用 type()函数 可以查看返回值的数据类型
# 》》 ('一', '二', '三')
# 》》 

  即传递给参数的数量是可选的、不确定的。
  它的格式比较特殊,是一个星号*加上参数名,它的返回值也比较特殊,它的返回值类型叫做元组(tuple)。

print()函数 完整的参数:`

print(*objects, sep = ' ', end = '\n', file = sys.stdout, flush = False)
  • 第一个参数objects带了*号,为不定长参数——这也是为什么print()函数可以传递任意数量的参数。其余四个为默认参数,我们可以通过修改默认值来改变参数
  • sep 控制多个值之间的分隔符,默认是空格
  • end 控制打印结果的结尾,默认是换行

9.5、返回多个值

函数,不仅可以支持输入多个参数,而且也可以同时输出多个值。

  • 要返回多个值,只需将返回的值写在return语句后面,用英文逗号隔开即可。
return a
return 'b'

  切记!我们不能写成上面这种两行的格式,是因为函数在执行过程中遇到第一个return语句就会停止执行,所以第二个 return ‘b’ 永远不会被执行。

注:随机功能:可以用random模块中的 'random.choice()'函数来

9.6、变量作用域

  • 第一点:一个在函数内部赋值的变量仅能在该函数内部使用(局部作用域),它们被称作【局部变量】,如cost()函数里的variable_cost。
  • 第二点:在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们被称作【全局变量】,如第一行的rent。
global xxx('xxx'表示:变量名)

global语句一般写在函数体的第一行,它会告诉Python,“我希望 ‘xxx’ 是个全局变量,所以请不要用这个名字创建一个局部变量”。

9.7、函数嵌套

函数嵌套最简单地例子:

print(len('我和你'))
  • 这里就是print()嵌套了len(),Python会先执行len()函数,得到一个返回值,再由print()打印出来。

例:

def div(num1, num2):
    growth = (num1 - num2) / num2
    percent = str(growth * 100) + '%'
    return percent

def warning():
    print('Error: 你确定上个月一毛钱都不赚不亏吗?')

def main():
    while True:
        num1 = float(input('请输入本月所获利润'))
        num2 = float(input('请输入上月所获利润'))
        if num2 == 0:
            warning()
        else:
            print('本月的利润增长率:'+div(num1,num2))
            break
main()

执行顺序如下:
Python个人随笔-----Python基础语法-----09_函数_第3张图片

你可能感兴趣的:(笔记,Python,python)