Day5:def函数

Python定义函式有几种方法

  1. Class函式
  2. def函式
    我们今天先介绍def函式。

先来解释函式(function)是甚麽?

函式(function)就像一个神奇机器一样你丢东西进去(Input)就会有特定的东西跑出来(Output)。

使用函式(function)有什麽好处?

1.扩展性高
2.可以比较容易的Debug
3.使程序比较易读

def函式的基本型态

[In]def test1(cat,car):
    print(f"{cat} drives the {car}")
test1("Andy","car")

[Out]
Andy drives the car

也可在参数值前面加上文字让整个参数比较好读。
def test1(cat,car):
    print(f"{cat} drive the {car}")
test1(cat="andy",car="car")
[Out]
andy drive the car
* 预设值参数(Default Argument)当来源端有传入该资料时,使用来源之资料,没有传入时,则依照设定的预设值来进行运算。
[In]
def test1(cat,car,cars,car_number="500"):
   print(f"{cat} drives the {car} and park have {car_number} {cars}.")
test1(cars="cars",cat="Andy",car="car")
[Out]
Andy drives the car and park have 500 cars.
当来源有传入参数,函式就会使用并进行运算。
[In]
def test1(cat,car,cars,car_number="500"):
    print(f"{cat} drives the {car} and park have {car_number} {cars}.")
test1(cars="cars",cat="Andy",car="car",car_number="69")
[Out]
Andy drives the car and park have 69 cars.

函式(Function)变数范围(Scope)

变数的有效范围会影响到是否可以读取。

区域变数(Local Variable):只有在函式的范围中都可以进行存取,反之。
[In]
def number():
    z=1
print(z)
[Out]
NameError                                 Traceback (most recent call last)
<ipython-input-1-bdf3712d3bb0> in <module>
      1 def number():
      2     z=1
----> 3 print(z)

NameError: name 'z' is not defined

全域变数(Global Variable):只要在同一个Python档案中,皆可存取。

def namber():
    z=30 #Local Variable
    
print(z)
[Out]
69
可以使用global函式来更改全域变数(Global Variable)之值。
[In]
z=69 #Global Variable

def namber():
    global z
    z=30 #Local Variable
namber()
print(z)
[Out]
30
函式(Function) *args、**kwargs运算子

1.如果要输入大量参数,可以使用*来打包

[In]
def park_lot(*result):
    print(result)
park_lot("BMW","Benz","Toyota","porsche")
[Out]
('BMW', 'Benz', 'Toyota', 'porsche')

2.如果要将资料打包成字典(Dictionary)形式则用**

[In]
def park_lot(**result):
    ##打包成字典(Dictionary)资料型态,
    ##在呼叫函式时,一定要使用关键字参数(Keyword Argument)
    print(result)
park_lot(brand1="BMW",brand2="Benz",brand3="Toyota",brand4="porsche")
[Out]
{'brand1': 'BMW', 'brand2': 'Benz', 'brand3': 'Toyota', 'brand4': 'porsche'}

函式(Function)种类

1.有return

[In]
def number(*val):
    total=5
    for val in val:
        if val %10:
            total != val #!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。
    return total
numbers=number(1,2,3,4)
print(numbers)        
    #in 用来判断复合资料型态如串列 (list) 、字串 (string)
    #等是否包含指定元素,字典 (dictionary)
    #方面则是判断是否包括指定的 key 。
[Out] 
5

2.无return

[In]
def number(*val):
    total=5
    for val in val:
        if val %5:
            total != val #!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。
             #in 用来判断复合资料型态如串列 (list) 、字串 (string)
             #等是否包含指定元素,字典 (dictionary)
             #方面则是判断是否包括指定的 key 。
    print(total)
number(1,2,3,4)
[Out]
5

打包成字典(Dictionary)资料型态,在呼叫函式时,一定要使用关键字参数(Keyword Argument)。


今天份的def笔记讲解结束。

source:


<<:  (急)毕业问卷填写

>>:  Day6:class函数

Progressive Web App 个案分析: 乐天 24 导入 PWA 後带来的好处 (10)

小编在读 PWA 相关技术文章的时候,刚好读到了乐天 24 这篇导入 PWA 的个案分析,乐天 24...

从零开始学3D游戏开发:入门程序实作 Part.6 用脚本计算分数

这是 Roblox 从零开始系列,入门章节的第十二个单元,今天你将学会如何把分数显示在右上角的玩家仪...

[Day 15] Sass - Loop

Hi 终於来到第15天了(一半了!!!) 今天要写的是关於Sass-Loop回圈,回圈很常与前几天介...

Day16 NiFi - 与 MongoDB 对接设定

今天要介绍如何用 NiFi 来对 MongoDB 的资料做操作。MongoDB 是我们最熟悉的 Do...

Day18 Loops(Ⅴ)

今天再举一个for回圈的例子,找出1~100的偶数。 Ans:从一开始所以一开始int i=1,然後...