程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Day03 of a week of getting started with Python

編輯:Python


活動地址:CSDN21天學習挑戰賽

學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾.各位小伙伴,如果您:
想系統/深入學習某技術知識點…
一個人摸索學習很難堅持,想組團高效學習…
想寫博客但無從下手,急需寫作干貨注入能量…
熱愛寫作,願意讓自己成為更好的人…


歡迎參與CSDN學習挑戰賽,成為更好的自己,請參考活動中各位優質專欄博主的免費高質量專欄資源(這部分優質資源是活動限時免費開放喔~),按照自身的學習領域和學習進度學習並記錄自己的學習過程.您可以從以下3個方面任選其一著手(不強制),或者按照自己的理解發布專欄學習作品,參考如下:

**

學習計劃

1,學習目標

提示:可以添加學習目標
例如: 一周掌握 Python 入門知識

2,學習內容

提示:可以添加要學的內容
例如:
A,掌握 Python 基本語法
B,掌握 Python 列表、字典、元組等集合類型的用法
C,掌握 Python 函數
D,掌握 Python 常用模塊
E, 掌握 Python 模塊與包
F,掌握 Python 類與對象

3,學習時間

每天拿出來兩個小時

4,學習產出

CSDN技術博客 每天一篇

學習日記

day03 Python的基礎語法——函數

Python 函數

函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段.

函數能提高應用的模塊性,和代碼的重復利用率.你已經知道Python提供了許多內建函數,比如print().但你也可以自己創建函數,這被叫做用戶自定義函數.

定義一個函數

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號().
  • 任何傳入參數和自變量必須放在圓括號中間.圓括號之間可以用於定義參數.
  • 函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明.
  • 函數內容以冒號起始,並且縮進.
  • return [表達式] 結束函數,選擇性地返回一個值給調用方.不帶表達式的return相當於返回 None.

語法

def functionname( parameters ):
"函數_文檔字符串"
function_suite
return [expression]

默認情況下,參數值和參數名稱是按函數聲明中定義的順序匹配起來的.

實例

以下為一個簡單的Python函數,它將一個字符串作為傳入參數,再打印到標准顯示設備上.

實例(Python 2.0+)
def printme( str ):
"打印傳入的字符串到標准顯示設備上"
print str
return

可更改(mutable)與不可更改(immutable)對象

在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象.

  • 不可變類型:變量賦值 a=5 後再賦值 a=10,這裡實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a.

  • 可變類型:變量賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了.

python 函數的參數傳遞:

  • 不可變類型:類似 c++ 的值傳遞,如 整數、字符串、元組.如fun(a),傳遞的只是a的值,沒有影響a對象本身.比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身.

  • 可變類型:類似 c++ 的引用傳遞,如 列表,字典.如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象.

1.函數初始

# Function code is a kind of organizational form
''' 函數語法格式: # 聲明函數 def 函數名(): 代碼塊 # 執行函數 函數名() # 函數的優點 (1)Avoid duplication of functions (2)解耦 '''
def print_ling():
# 打印一個菱形
rows = 8
i = j = k = 1
# 菱形的上半部分
for i in range(rows):
for j in range(rows - i):
print(" ", end=" ")
j += 1
for k in range(2 * i - 1):
print("*", end=" ")
k += 1
print("\n")
# 菱形的下半部分
for i in range(rows):
for j in range(i):
print(" ", end=" ")
j += 1
for k in range(2 * (rows - i) - 1):
print("*", end=" ")
k += 1
print("\n")
# # 打印一個菱形
# print_ling()
# print("hello world!!!")
# # 打印一個菱形
# print_ling()
# print("hello yuan!")
# # 打印一個菱形
# print_ling()

2.函數的參數

''' 聲明函數: def 函數名(形式參數): 函數體 函數調用: 函數名(實際參數) '''
def print_ling(rows): # rows就是形式參數
# 打印一個菱形
i = j = k = 1
# 菱形的上半部分
for i in range(rows):
for j in range(rows - i):
print(" ", end=" ")
j += 1
for k in range(2 * i - 1):
print("*", end=" ")
k += 1
print("\n")
# 菱形的下半部分
for i in range(rows):
for j in range(i):
print(" ", end=" ")
j += 1
for k in range(2 * (rows - i) - 1):
print("*", end=" ")
k += 1
print("\n")
# print_ling(8) # 8 Is a real parameter
# print_ling(6) # 6 Is a real parameter
# print_ling(4)
# **************************** 一 位置參數 ****************************
def add(a, b): # a,b都是形式參數
print(a + b)
# add(1, 2) # 實際參數,The number of actual parameters and the formal parameter number must be consistent
# add(4, 6) # 實際參數
# 練習: 計算1-100的和
# 構建一個函數,兩個參數n,m可以計算n+(n+1)+...+m
def cal_add(n, m):
ret = 0
for i in range(n, m + 1): # n小於m
ret += i
print(ret)
# cal_add(1, 100)
# cal_add(56, 100)
# cal_add(100, 200)
# ****************************二 默認參數 ****************************
# 注意事項: 默認參數一定要放在位置參數的後面
def print_info(name, age, gender="男"):
# name = "yuan"
# age = 22
# gender = "男"
print("姓名:%s 年齡:%s,性別:%s" % (name, age, gender))
# print_info("rain", 22)
# print_info("rain", 22, '女')
# print_info("rain",20,'女')
# **************************** 三 關鍵字參數 ****************************
def print_info2(name, age, height):
# name = "yuan"
# age = 22
# gender = "男"
print("姓名:%s 年齡:%s,身高:%scm" % (name, age, height))
# The key sub parameter must be placed behind the position parameters
# print_info2("rain", 180, 20)
print_info2(name="rain", height=180, age=20)
print_info2(height=180, age=20, name="rain")
print_info2("yuan", height=180, age=20)
# **************************** 四 不定長參數 ****************************
# *args: For packaging position parameters **kwargs: Packaging of keyword arguments
def add2(a, b, c): # a,b都是形式參數
print(a + b + c)
a, b, *c = [1, 2, 3, 4]
print("a", a)
print("b", b)
print("c", c)
def add3(*args):
print(args, type(args))
ret = 0
for i in args:
ret += i
print(ret)
add3(1, 2)
add3(1, 2, 5, 6)
add3(1, 2, 57, 69, 7)
def add4(name, *a):
# print("%s在調用add函數" % name)
print("a", a)
add4("yuan", 1, 2, 4, 5)
def print_info3(name, age, *args, **kwargs):
print("args", args) # (1,2,3)
print("kwargs", kwargs) # {'name': 'yuan', 'age': '22'}
print("姓名:%s 年齡:%s,身高:%s" % (name, age, kwargs.get("height")))
# print_info3(1, 2, 3, name="yuan", age="22")
# print_info3(name="yuan", age="22", height=180)
# print_info3("rain", name="yuan", age="22", height=180)

3.函數的返回值

''' # 聲明函數 def 函數名(形參,...): 函數體 return 值 # 函數返回值 # 如果沒有寫return ,默認None ret = 函數名(實參) # retUsed to connect function return value '''
def mul(x, y):
z = x * y
return z
def add(*args):
ret = 0
for i in args:
ret += i
# print(ret)
return ret
# 計算 (1+2+3)*24
# print((1 + 2 + 4) * 24)
a = add(1, 2, 3, 7, 8, 9)
b = mul(a, 24)
print(b)
# 默認返回值None
def foo():
print("OK")
ret = foo()
print("ret", ret) # None
# 返回多個值: Set multiple values tuple returned
def bar():
return True, "yuan" # (True, "yuan")
ret = bar()
print(ret) # (True, 'yuan')
state, username = bar()

4.函數的作用域

# 作用域:A variable within the scope of what effective
# LEGB
# L:local -> E:enclosing -> G:global -> B:built-in
# 案例1
x = 100
print(id(x))
def bar():
x = 1
def foo():
# 全局聲明
# global x
# print(id(x))
x = 1000
print("局部x", x)
foo()
print("全局x", x)
# 案例2:
x = 100
def foo():
# x = 12
def bar():
# x = 1
print(x)
bar()
foo()
bar()

5.編碼

# B = 8b
# KB = 1024B
# MB = 1024KB
# GB = 1024MB
s = "苑昊"
# String coding method: The process of string into a binary number 編碼
ret1 = s.encode("utf8")
ret2 = s.encode("GBK")
print(ret1,type(ret1))
print(ret2)
# 解碼方法:The process of the byte data into a string
s1 = ret1.decode("GBK")
s2 = ret1.decode("utf8")
print(s1)
print(s2)
print(ret2.decode("GBK"))

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved