python函数的定义与使用

函数的定义与使用

函数的定义与调用
def a():
    print("hello")
a()

当前版本可以定义在调用后面
a(
def a():
    print("hello"
          
此处的r为传参,可以使用get_area(10)来传参,使用return返回值
def get_area(r):
    return r*r	#返回面积
print(get_area(10))		#此处的返回值需要赋值给变量或者直接输出
>>>100
接着上面的代码,当我们没有传参的时候,则回显为None
print(get_area())

函数的实际参数
1.调用函数时,实际传入的参数叫做实参
实参分为两类:
	1)位置参数
    def get_area(h,r):	#定义三角形的底和高
        return h*r/2
    get_area(3,4)	h=3  r=4	#实参的先后顺序不能颠倒
    ger_area(4,3)	h=4	 r=3	#先后顺序要和形参一致
    2)赋值参数
	使用赋值参数,此时参数先后顺序无所谓
    def get_area(h,r):	#还是这串代码
        return h*r/2
    get_area(r=3,h=4)	#此时顺序不影响实际传参
参数值的类型
#在调用函数时,要把实参传给形参。如果实参是简单的数据类型(如数值型、字符串等)这时是传值,就是把实参的值赋值给形参
#如果实参是组合数据类型(如列表、元组、字典等),这是是传址,就是把实参地址传递给形参
#如果是传值,改变形参对实参没有任何影响。如果是传址,形参的改变会导致实参随之改变
形式参数
#在定义函数时,可以有形式参数,简称为形参。形参可以有0个1个或多个,没有个数限制
#如果一个形参有值,就称为默认参数。注意默认参数要放在位置参数的后面
def persion(name,sex="男"):	#有默认值的参数要放在没有值的形参后面
    print(name)
    print(sex)
persion("zhangsan","女")		#如果不定义sex这个形参那么sex的输出值默认为男
>>>zhangsan
>>>
形参的可变长度参数
#定义函数时,形参可以是一个元组或字典等长度不定的参数。注意:如果同时出现了元组和字典,要把字典写在元组后面
#当不给元组赋值时,这里不会报错,因为不传参则认为是空元组和空字典
def student(name,sex="男",*tuple1,**dict1):
    print(name)
    print(sex)
    for i in tuple1:
        print(i)
    for key,value in dict1.items():
        print(f"{key}={value}")
student("zhangsan")
>>>zhangsan
>>>男
student("lisi","女")
>>>lisi
>>>女
student("wangwu","男","河北","123456")
>>>wangwu
>>>>>>河北
>>>123456
student("赵六","男","河北",address="石家庄",tel="13261634016")		#此处的a=b代表了字典
>>>赵六
>>>>>>河北
>>>address=石家庄
>>>tel=13261634016
函数的返回值
python函数中可以使用return表达式返回一个值,如果省略表达式甚至省略return关键字表示返回一个None值
一个函数永远有返回值,none也是返回值,none不是空也不是0,none就是none
None0、空字符串、空列表、空元组、空字典、空集合都不相等
print(None==None)
>>>True
变量作用域
根据作用域不同,变量大致分为全局变量和局部变量
定义在函数内部的是局部变量,另外,函数形参也是局部变量
定义在函数外部的变量是全局变量
全局变量定义后,可以被后面的代码访问,只有程序结束退出python,全局变量才会消失
局部变量在定义后,只能在函数体被访问,函数执行结束,局部变量自动消失,不能再次访问
如果在函数中定义的局部变量和全局变量同名,则自动掩盖全局变量
注意:全局变量可以在函数内读取,但不可改变,如果试图修改全局变量的话会报错
global关键字
#为了在函数内部能读写全局变量,python提供global语句在函数内部修改全局变量
a=10
def exam():
    global a
    a = 5
    print(a)
exam()
print(a)
>>>5
>>>5
python内置函数
函数名 用途 示例
abs() 返回数值的绝对值 abs(-2) → 2
abs(3.77) → 3.77
divmod() 返回两个数相除的商和余数组成的元组 divmod(10,3) → (3, 1)
max() 返回可迭代对象中的最大值(支持数字、字符串) max(-1,1,2,3,4) → 4
max('abcef989') → 'f'
min() 返回可迭代对象中的最小值 min(-1,12,3,4,5) → -1
pow() 计算幂运算(可附加取模运算) pow(2,3) → 8
pow(2,3,5) → 3(即 8 % 5
round() 对数值进行四舍五入(可指定保留小数位数) round(1.456778) → 1
round(1.45677, 2) → 1.46
sum() 计算可迭代对象的数值总和(可指定起始值) sum((1,2,3,4)) → 10
sum((1,2,3,4), -10) → 0
数据类型转换函数
函数 描述
int(x) 将x转换为整数类型
float(x) 将x转换为浮点类型
str(x) 将x转换为字符串
chr(x) 将x转换为转化为一个字符
ord(x) 将字符x转换为其对应的整数值
hex(x) 将一个则行数x转化为一个十六进制的字符串
oct(x) 将一个整数x转化为一个八进制字符串
bin(x) 将一个整数x转换为一个二进制字符串
序列操作函数
函数名 功能说明 示例
all() 判断可迭代对象中的所有元素是否均为 True 值(非零、非空、非False等) all([True, 1, "abc"]) → True
all([True, 0, ""]) → False
any() 判断可迭代对象中是否存在至少一个 True 值的元素 any([False, 0, ""]) → False
any([False, 1, ""]) → True
range() 生成一个整数序列(默认从0开始) range(5) → 0,1,2,3,4
range(2,5) → 2,3,4
map() 对可迭代对象中的每个元素应用指定函数,返回新迭代器 list(map(lambda x: x*2, [1,2,3])) → [2,4,6]
filter() 根据条件函数过滤可迭代对象中的元素,返回符合条件的迭代器 list(filter(lambda x: x>0, [-1,0,1])) → [1]
reduce() 对可迭代对象中的元素进行累积计算(需从 functools 导入) from functools import reduce
reduce(lambda a,b: a+b, [1,2,3]) → 6
zip() 将多个可迭代对象的对应位置元素组合成元组,返回迭代器 list(zip([1,2], ["a","b"])) → [(1, 'a'), (2, 'b')]
sorted() 对可迭代对象进行排序,返回新列表(原对象不变) sorted([3,1,2]) → [1,2,3]
sorted("cba") → ['a','b','c']
reversed() 反转序列(如列表、字符串),返回迭代器 list(reversed([1,2,3])) → [3,2,1]
''.join(reversed("abc")) → "cba"
enumerate() 将一个可迭代对象中的元素及其索引组合成枚举对象,便于在循环中同时获取索引和值 list(enumerate([‘a’, ‘b’, ‘c’])) → [(0, ‘a’), (1, ‘b’), (2, ‘c’)] for index, value in enumerate([‘a’, ‘b’, ‘c’]): print(index, value) → 0 a、1 b、2 c

你可能感兴趣的:(python,开发语言)