#4 Python进阶教学1

副程序,也称为函数、函式:将程序包装成一个区块,需要时再呼叫出来使用,让我们来揭露副程序的奥秘吧~

副程序

先建构副程序,才能使用副程序
python只需要使用def关键字即可宣告副程序,用法如下:

#定义函数
def 函数名称():
	函数内部程序...

是不是非常简单呢?
现在建构完了,我们要来使用它

#呼叫函数
函数名称()

我们实际操作一次看看

# 定义副程序
def say_hi():
    print("Hi")
    
# 使用副程序
say_hi()
# 印出 "Hi"

令一个基本操作,带参数呼叫,使用方法如下

#定义函数
def 函数名称(参数名称1, 参数名称2,.....):
	函数内部程序

#呼叫函数
    函数名称(参数1, 参数2,.....)

程序码如下

# 定义副程序
def say(word):
    print(word +  "! friend")
    
# 使用副程序
say("Hi")

# 印出 "Hi! friend"

有回传值的副程序

** return 传出 回传值,并强制结束函数**

#定义函数
def 函数名称(参数名称1, 参数名称2,.....):
	函数内部程序
	return 回传值
    
#呼叫函数
变数 = 函数名称(参数1, 参数2,.....)

下面是输入一个数字的参数,副程序会回传该数字的阶乘(3!、5!、等...)副程序

# 定义副程序
def factorial(num):
    ans = num
    num -= 1
    while num > 0 :
        ans *= num
        num -= 1
    return ans
    
# 使用副程序
a = say(6)
print(a)

# 印出  720

参数的操作

参数预设值

我们在定义副程序的时候,可以先给参数预设值,这样当我呼叫复生是的时候,要是没有下参数,副程序就会自己使用内建的参数预设值,用法如下

# 定义副程序
def dog(name = "小黑"):
	print(name)
# 使用副程序
dog()                #印出  小黑
dog("小白")      #印出  小白

多个参数

我们在定义副程序时可以宣告多个参数,呼叫时也必须依照参数的先後顺序赋值,范例如下

# 定义副程序
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程序    
dinner("八点", "达美乐")
 #印出  "在八点,吃达美乐"

如果没有按照顺序下参数,可能会出现以下不合逻辑的错误

# 定义副程序
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程序    
dinner("达美乐", "八点")
 #印出  "在达美乐,吃八点"

我们可以看到上面的两个参数下的顺序反了,所以出现了我们预期以外的错误,如果非要不按照顺序下参数,这时候要使用下面的技巧

指定参数赋值

在呼叫副程序时,指定参数的内容,操作如下

# 定义副程序
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程序    
dinner(food = "达美乐", time = "八点")
 #印出  "在达美乐,吃八点"

主程序

C跟Java都有个主程序,而python是不需要主程序就能执行的,但主程序能帮助我们标记程序的进入点,进而达成模组化开发,没有主程序的结果就是各行指令都是分散的,可能第一行是执行一条指令,接着第2、3...都是在定义副程序,而下一行要执行的指令却在10多行,这样会造成程序难以阅读,因此这里要来介绍主程序

if __name__ == "__main__":
    print("hello world")

if __name__ == "__main__":这个区块的内容就是主程序,也就是程序的进入点,下面是范例

def say(word):
    return "Hey!" + word + "!"
    
if __name__ == "__main__":
    print(say("hello world"))
# 印出  "Hey!hello world!"

<<:  【从零开始的Swift开发心路历程-Day7】简易调色盘Part3(完)

>>:  Day 13: 人工神经网路初探 激活函数(上)

Day 04:金鱼记忆力太短暂,交给外挂记吧!autosuggestions 与 substring-search

更新 我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有...

[Day 25] 杂记 - GL_TRIANGLE_STRIP与GL_TRIANGLE_FAN

各位读者抱歉,今天是很水的一回,因为今天加班,很晚才到家,单纯分享一个之前看到的问题。之前因为时间直...

Day23-你的资料安全吗(一)

前言 就如第一天提到的,资料库可以说是一家公司的命脉,如果资料库不小心被外部攻击者入侵导致资料遗失、...

Day 26 - WooCommerce: 定义虚拟帐号付款闸道

永丰金流收款 API 在目前我们从文件看到的,支援信用卡付款及虚拟帐号 ATM 付款。信用卡付款方式...

【Day19】传值和传址(传参考)

传值(Call by value) 在 JavaScript 中,只有原始型别为传值(Call by...