一、函数的理解
1、函数定义:不指定函数内容
def 函数名(形参):
函数体
return 返回值
函数名(实参)
print(函数名(实参)
def hello(): ##定义函数,不会执行函数内容
print('nihao') ##函数内容
hello() ##调用函数,真正执行函数内容
定义函数时, 参数称为形参, 这个参数的名字可以任意修改;
def hello(username): # username='harry'
print("hello %s" %(username))
hello('harry')
for循环遍历列表内容; user=‘harry’, ‘jerry’, ‘tom’
def hello(username):
print("hello %s" %(username))
for user in ['harry', 'jerry', 'tom']:
调用函数时的参数称为实参, 这个参数必须有存在的值;
hello(user)
二、带有返回值的函数
1、函数的返回值
def hello():
return "world" ###return 关键字, 函数的返回值, 通过print打印
####一般函数都有返回值, 如果在python中没有返回值时, 默认返回None
print(hello())
2、默认参数
默认参数一般情况下为不可变类型
def mypow(a,b=2): ##如果只传递一个参数, 那么b默认为2
return a ** b
print(mypow(2,4)) ##如果传递两个参数, a=2,b=4, 覆盖原有的默认值
print(mypow(2))
3、可选参数
当形参里面是*变量名, 可选参数, 可以传递任意多个参数
def mysum(*args):
return sum(args)
print(mysum(1,2))
print(mysum(1,2,3))
4、关键字参数
**变量名可以接收任意多个key-value键值对,接受的变量是字典类型的key—value键值对
def get_info(name,passwd,**kwargs):
print(name,passwd,end=' ')
print(kwargs)
get_info('fentiao','redhat')
get_info('fendai','123',city="xi'an",age=10,weight=80)
5、return
def hello():
# 函数一旦遇到return, 后面的代码不再执行
return "ok"
print("hello")
print("hello")
print(hello())
6、函数的作用域
count = 10
print("全局变量:",id(count))
def hello():
# 函数里面的变量, 只在函数内部生效;
# global声明局部变量为全局变量;
global count
count = 20
print("局部变量:", id(count))
hello()
print(count)
7、函数的多个返回值
def hello():
return "hello","world"
res1,res2 = hello()
print(res1,res2)
8、形参的顺序
(常用的)参数顺序: 必选参数 > 默认参数 > 可变参数 > 关键字参数
特例): 可变参数 > 默认参数
练习
1.f(n)为完全平方和公式,给定k,a,b,求a,b之间有多少个n满足k*f(n)=n
k = int(input('k:'))
a = int(input('a:'))
b = int(input('b:'))
count = 0 ##从0开始
def f(n): ##计算完全平方和
res = 0
for i in str(n): ##强制成字符串遍历
res +=int(i)**2 ##求完全平方和
return res
def isok(num): ##用一个函数来判断是否满足条件
if k*f(num) ==num:
return True
else:
return False
for num in range(a,b+1): ##在a,b之间尝试
if isok(num):
count +=1 ##满足条件则+1
print(count)
2.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
def main(num): ##定义函数
for x in range(1000): ##遍历1000内的整数
if x ** 2 == num: ##当num是完全平方数时,返回True
return True
for i in range(1000): ##遍历1000内的整数
n1 = i + 100 ##题目要求+100和+168后依然是完全平方数
n2 = i + 168
if main(n1) and main(n2): ##调用函数,当n1和n2均成立,i满足要求
print(i)