廖雪峰网站:学习python函数—函数参数(三)

1、*args

# 位置参数,计算x2的函数
def power(x):
    return x * x

p = power(5)
print(p)

# 把power(x)修改为power(x, n),用来计算xn
def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
p1 = power(5, 2)
p2 = power(5, 3)
print(p1)
print(p2)

# 默认参数
# 使用默认参数有什么好处?最大的好处是能降低调用函数的难度。

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
        return s

# 关键字参数有什么用?
# 它可以扩展函数的功能。比如,在person函数里,
# 我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。
# 试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,
# 其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

# *args是可变参数,args接收的是一个tuple
# 可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,
# 再通过*args传入:func(*(1, 2, 3));

def hello(greeting, *args):
    if (len(args)==0):
        print(‘%s!‘ % greeting)
    else:
        print(‘%s, %s!‘ % (greeting, ‘, ‘.join(args)))

hello(‘Hi‘)
hello(‘Hi‘, ‘Sarah‘)
hello(‘Hello‘, ‘Michael‘, ‘Bob‘, ‘Adam‘)

names = (‘Bart‘, ‘Lisa‘)
hello(‘Hello‘, *names)

2、**kw

# Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

# 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

# 要注意定义可变参数和关键字参数的语法:
# *args是可变参数,args接收的是一个tuple;
# **kw是关键字参数,kw接收的是一个dict。
# 以及调用函数时如何传入可变参数和关键字参数的语法:
# 可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,
# 再通过*args传入:func(*(1, 2, 3));

# 关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,
# 再通过**kw传入:func(**{‘a‘: 1, ‘b‘: 2})。

# 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

# 命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

# 定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。

def print_scores(**kw):
    print(‘ Name Socre‘)
    print(‘..........‘)
    for name, score in kw.items():
        print(‘%10s  %d‘ %(name, score))
        print()
print_scores(Adam = 99, Lisa=88, Bart=77)

data ={

    ‘Adam Lee‘: 99,
    ‘Lisa S‘: 88,
    ‘F.Bart‘: 77
}

print_scores(**data)

def print_info(name, *, gender, city=‘Beijing‘, age):
    print(‘Personal Info‘)
    print(‘-------------‘)
    print(‘Name:%s‘ % name)
    print(‘Gender:%s‘ % gender)
    print(‘City: %s‘ % city)
    print(‘age:%s‘ % age)
    print()
print_info(‘Bob‘, gender=‘male‘, age=20)
print_info(‘Lisa‘,gender=‘female‘, city=‘Shanghai‘, age=18)

原文地址:https://www.cnblogs.com/qy1234/p/9362572.html

时间: 2024-08-03 17:40:05

廖雪峰网站:学习python函数—函数参数(三)的相关文章

廖雪峰网站—学习python基础知识(二)

1.list """ Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. """ classmates = ['Michael', 'Bob', 'Mary'] print('classmates', classmates) print('len(classmates)= ', len(classmates)) print('classmates[0]=', classmates[0]) p

爬虫学习 Python网络爬虫第三弹《爬取get请求的页面数据》

爬虫学习 Python网络爬虫第三弹<爬取get请求的页面数据> 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4

据廖雪峰python3教程----python学习第七天

函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了. python的函数除了正常的定义必选参数外,还可以使用默认参数,可变参数合关键字参数, 位置参数 定义一个计算x 的平方的函数 >>> def power(x):               #参数 x 就是一个位置参数      return x**2 >>> power(5) 25 >>> power(15) 225 为了方便我们再定义一个可以计算 x 的任意次的

据廖雪峰python3教程----python学习第十一天

sorted 排序算法 Python的内置sorted()函数可以对list进行排序: >>> sorted([1,10,2,5,42,6]) [1, 2, 5, 6, 10, 42] 此外,sorted()函数也是一个高阶函数,他还可以接受一个key函数来实现自定义的排序,例如按绝对值大小排序: >>> sorted([36,5,-12,9,-21],key=abs) [5, 9, -12, -21, 36] key指定的函数将作用于list的每一个元素上,并根据ke

Php廖雪峰教程学习与实战

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 目录 Python教程 Python简介 安装Python 第一个Python程序 Python基础 函数 高级特性 函数式编程 模块 面向对象编程 面向对象高级编程 错误.调试和测试 IO编程 进程和线程 正则表达式 常用内建模块 常用第三方模块 virtualenv 图形界面 网络编程 电子邮件 访问数据库 Web开发 异步I

廖雪峰网站:学习python函数—递归函数(四)

# 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n # 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出. def fact(n): if n==1: return 1 return n * fact(

廖雪峰网站:学习python基础知识—循环(四)

一.循环 1.for names = ['Michal', 'Bob', 'tracy'] for name in names: print(name) sum = 0 for x in [1, 2, 3, 4, 5, 6, 7,8,9,10]: sum = sum + x print(sum) # 打印数字 0 - 9 for x in range(10): print(x) 2.while sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2

据廖雪峰python3教程----python学习第十三天

继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 编写一个名为 Animal 的class,有一个 run() 方法可以直接打印: >>> class Animal(object):      def run(self):           print('Animal is running...') 当我们

据廖雪峰python3教程----python学习第十天

列表生成式(List Comprehensions) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>> list(range(1,11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 生成[1x1,2x2,3x3,...,10x10] : >>&g