python基礎學習(二)

2021-08-27 11:40:40 字數 4056 閱讀 3411

print(abs(-5))

print(max(1,2))

print(max(1,2,3,4,5))

print(int('123'))

print(int(12.34))

print(float('12.34'))

print(str(1.23))

print(str(100))

print(bool(1))

print(bool(''))

a = abs #變數a指向abs函式,相當於給函式起了個別名

print(a(-1))

#自定義函式

defmy_abs

(x):

ifnot isinstance(x,(int,float)):

raise typeerror('bad operand type')

if x>=0:

return x

else:

return -x

print(my_abs(-10))

#from abstest import my_abs 引入其他.py檔案中定義的函式直接呼叫

#空函式,什麼也不幹

defnop

():pass

#pass 可以作為佔位符,現在不知道函式的實現,可以通過pass佔位,類似於 ;

#my_abs(1,2) typeerror 引數錯誤

#my_abs('acb')

import math

#座標 位移 速度

#返回多個引數,實際上返回的只是乙個tuple

defmove

(x,y,step,angle=0):

nx = x + step*math.cos(angle)

ny = y - step*math.sin(angle)

return nx,ny

x,y = move(100,100,60,math.pi / 6)

print(x,y)

r = move(100,100,60,math.pi / 6)

print(r)

#python的函式定義非常簡單,但靈活度卻非常大。

#除了正常定義的必選引數外,還可以使用預設引數、

#可變引數和關鍵字引數,使得函式定義出來的介面,

#不但能處理複雜的引數,還可以簡化呼叫者的**

#預設引數 預設引數在後(呼叫堆疊)

defmy_power

(x,n=2):

s = 1

while n>0:

n = n - 1

s = s * x

return s

print(my_power(5))

print(my_power(5,3))

#預設引數必須指向不變物件

defadd_end

(l=):

return l

print(add_end([1,2,3])) #[1,2,3,'end'] ok

print(add_end(['a','b',3])) #['a','b',3,'end'] ok

print(add_end()) # ['end'] ok

print(add_end()) # ['end','end'] error why

print(add_end()) # ['end','end','end'] error why 錯誤原因:預設引數指向了變數

defadd_end_m

(l=none):

if l is

none:

l =

return l

print(add_end_m()) # ['end'] ok

print(add_end_m()) # ['end'] ok

print(add_end_m()) # ['end'] ok

#可變引數 允許傳入0個或任意個引數,這些引數在函式呼叫時自動組裝為乙個tuple

defcalc

(numbers):

sum = 0

for n in numbers:

sum = sum + n*n*n

return sum

print(calc([1,2,3]))

print(calc((1,2,3,4,5)))

#真正的可變引數

defcalc_m

(*numbers):

sum = 0

for n in numbers:

sum = sum + n*n

return sum

print(calc_m())

print(calc_m(1))

print(calc_m(1,2))

print(calc_m(1,2,3))

print(calc_m(1,2,3,4))

nums = [1,2,3]

print(calc_m(*nums)) # *num 表示把nums這個list的所有元素作為可變引數傳進去。

#關鍵字引數 允許傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

defperson

(name,age,**kw):

print('name:',name,'age:',age,'other:',kw)

print(person('michael',30))

aa = person('bob',30,city='beijing')

print(aa)

#命名關鍵字引數

defperson

(name,age,**kw):

if'city'

in kw:

pass

if'job'

in kw:

pass

print('name:',name,'age:',age,'other:',kw)

person('jack',24,city='begin',addr='chaoyang',zipcode=123456)

#命名關鍵字引數(需要可變引數,或者*分割) 限制關鍵字引數的名字 命名關鍵字引數必須傳入引數名

defperson

(name,age,*,city,job):

print(name,age,city,job)

person('jack',24,city='begin',job='engineer')

#如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:

defperson

(name,age,*args,city,job):

print(name,age,args,city,job)

person('jack',24,(1,2,3),city='begin',job='engineer')

person('jack',24,city='begin',job='engineer')

#命名關鍵字引數可以有預設值

defperson

(name,age,*,city='beijing',job):

print(name,age,city,job)

person('jack',24,job='engineer')

#遞迴函式

deffact

(n):

if n==1:

return

1; return n*fact(n-1)

print(fact(100))

#尾遞迴 防止棧溢位

#尾遞迴呼叫時,如果做了優化,棧不會增長,因此,無論多少次呼叫也不會導致棧溢位。

deffact_iter

(num,product):

if num == 1:

return product

return fact_iter(num-1,num*product)

deffact

(n):

return fact_iter(n,1)

print(fact(100))`這裡寫**片`

Python基礎學習二

字典 dic dic.keys dic 省 keys dic 省 市 返回的都是列表 列組索引 index 切片 刪除 del remove pop 長度 len 迴圈 for while break 迴圈不在進行 continue 下一次迴圈 pass 站位 return 終止 exit 退出 包...

Python基礎學習 二 基礎語法

預設情況下,python 3 原始碼檔案以utf 8編碼,所有字串都是 unicode 字串。當然你也可以為原始碼檔案指定不同的編碼 conding utf 8 在python 3中,非 ascii 識別符號也是允許的了。保留字即關鍵字,我們不能把它們用作任何識別符號名稱。python 的標準庫提供...

python基礎學習 二 python知識

2.python搭建環境 3.pycharm的安裝和配置 解釋型語言的程式不需要編譯,相比編譯型語言省了道工序,解釋性語言在執行程式的時候才逐行翻譯 python的應用 pip使用 在命令列下,輸入匹配,回車可以看到說明 名稱 豆瓣 阿里中國科學技術大學 清華安裝過程 字型修改 file setti...