Python语言学习:Python语言学习之函数(定义&调用函数/常用内置函数如filter&map/内嵌函数/闭包/匿名函数如lambda&map)daiding
函数的简介
函数可以理解为代码块,程序中可重复使用的程序段。给一段程程序起一个名字,用这个名字来执行一段程序,反复使用(调用函数),用关键字 'def' 来定义,identifier(参数)。
函数VS过程:函数function(做完事还付钱)是有返回值的,而过程procedure(做完事直接走人)是简单、特殊且没有返回值的。其实严格来讲python只有函数没有过程。
print("yunyaniu,"*3) #输出yunyaniu,yunyaniu,yunyaniu,
1、定义&调用函数
函数文档属性:对函数的参数的返回值进行介绍,方便别人更好的理解这个函数。
函数名._doc_
1)、定义函数的时候,返回可以用print和return两种方式。
2)、函数定义时有两种参数:
形式参数parameter:
实际参数argument:
1.1、定义函数(无参无返回的)
def say_hi(): #定义函数(无参无返回的)
print("hello!") #hello!
say_hi() #调用该函数
1.2、定义函数(有参数(数字型)+无返回值)
def print_sum_two(a, b): #定义函数(有参数(数字型)+无返回值)
c = a + b
print(c) #输出结果9
print_sum_two(3, 6) #调用函数来计算两个参数的和
1.3、定义函数(有参数(字符串型)+无返回值)
def hello_some(str): #定义函数(有参数(字符串型)+无返回值)
print("hello " + str + "!")
hello_some("Python") #hello Python!
1.4、定义函数的默认参数
def repeat_str(str, times=1): #定义函数(有参数+有返回值(为重复次数))
定义函数的默认参数:当出现times=1时,后边的参数都要写出默认值。例如f(a = 1, b)非法,需要改为f(a = 1, b= 2)
repeated_strs = str * times
return repeated_strs
repeated_strings = repeat_str("Happy Birthday!", 4)
rint(repeated_strings)
#Happy Birthday!Happy Birthday!Happy Birthday!Happy Birthday!
def add(num1,num2): #自定义函数def
print('这是我创建的第一个函数!')
print('我表示很激动!')
result=num1+num2; print(result)
return(num1+num2) #此句话可代替上边两小句
print( add(8,9) ) #调用自定义函数add
1.5、定义函数,未知个数的VarArgs参数
#VarArgs参数:当不知道原函数所包含参数个数时,
def print_paras(fpara, *nums, **words): #带*表示一些列参数,
print("fpara: " + str(fpara))
print("nums: " + str(nums))
print("words: " + str(words))
print_paras("hello", 1, 3, 5, 7, word = "python", anohter_word = "java")
1.6、定义关键字参数:当参数过多时,只想给某个参数赋值。
#关键字参数: 调用函数时,选择性的传入部分参数
def func(a, b = 4, c = 8):
print('a is', a, 'and b is', b, 'and c is', c)
func(13, 17) #选择性的传入部分参数
func(125, c = 24) #输出a is 125 and b is 4 and c is 24
func(c = 40, a = 80) #输出a is 80 and b is 4 and c is 40
assert可以用来置入检查点,当需确保程序中的某个条件一定为真才能让程序正常工作。
assert #关键字"断言",当这个关键字后边的条件为假的时候,程序自动崩溃并抛出异常
1.7、收集参数:当不知道该函数到底有多少参数时,参数前边加上*号就变为收集参数。
def test(*params): #加上*号代表形参*params
print("参数的长度是:" ,len(params))
print("第二个参数是:" ,params[1])
test(1,"云崖牛",3,4,5)
def test1(*params,ewai): #加上*号代表形参*params
print("参数的长度是:" ,len(params),ewai)
print("第二个参数是:" ,params[1])
test1(1,"云崖牛",3,4,5,ewai=6)
2、BIF内置函数:直接调用,例如print等函数。
函数命名的几个特点:
1)、属性函数前边有L的说明从左边开始查找,前边有R说明从右边开始查找。
2)、start是从开头开始检查,end是从结尾开始检查
3)、zfill即用zero填充
2.0、基本函数分类
(1)、字符串大小写相关
isupper() | 如果字符串中至少包含—个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False。 |
upper() | 转换字符串中的所有小写字符为大写。 |
lower() | 转换字符串中所有大写字符为小写。 |
capitalize() | 把字符串的第一个字符改为大写 |
casefold() | 把整个字符串的所有字符改为小写 |
swapcase() | 翻转字符串中的大小写。 |
title() | 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。 |
(2)、字符串对齐、居中、填充相关
center(width) | 将字符串居中,并使用空格填充至长度width 的新字符串 |
ljust(width) | 返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串。 |
rjust(width) | 返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串。 |
zfill(width) | 返回长度为width 的字符串,原字符串右对齐,前边用0填充。 |
(3)、字符串插入、分割、替换相关
join(sub) | 以字符串作为分隔符,插入到sub中所有的字符之间。 |
split(sep=None, maxsplit=-1) | 不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接的列表。 |
partition(sub) | 找到子字符串 sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串’,“,”) |
rpartition(sub) | 类似于partition()方法,不过是从右边开始查找。 |
replace(old,new[,count]) | 把字符串中的old子字符串替换成new子字符串,如果count 指定,则替换不超过count 次。 |
expandtabs([tabsize=8]) | 把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8。 |
splitlines(([keepends])) | 按照'\n’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行。 |
(4)、字符串去空格相关