函数
函数（）在数学中为两不为空集的集合间的一种对应关系：输入值集合中的每项元素皆能对应​​唯一一项输出值集合中的元素。例如实数formula_1对应到其平方formula_2的关系就是一个函数，若以formula_3作为此函数的输入值，所得的输出值便是formula_4。
为方便起见，一般做法是以符号formula_5等等来指代一个函数。若函数formula_6以formula_1作为输入值，则其输出值一般写作formula_8，读作"'f of x' "。上述的平方函数关系写成数学式记为formula_9。函数的概念并不局限于数之间的映射关系，例如若定义函数formula_10为每个国家当前的首都，那么给予输入值英国就会输出唯一值伦敦：formula_11。 气温的分布也能用函数表达，以时间和地点作为参量输入，以该时该地的温度作为输出。表达函数有多种方式，例如解析法是用数学式表达两个变量之间的对应关系，图像法是用坐标系上的函數圖形表达两个变量之间的对应关系，列表法用表格表达两个变量之间的对应关系。
現代數學中，函数所有输入值的集合被称作該函数的定义域，而其輸出值所存在的集合稱為對應域。其中值域特指該函數的输出值集合，意即上域包含了值域，值域為上域的子集。通常輸入值稱作函數的參數或參量，輸出值稱作函數的值。函數將有效的輸入值變換為唯一的輸出值，同一輸入總是對應同一輸出，但反之未必成立。因此如formula_12這樣的表達式並沒有定義出一个函数，因为输出值有兩個可能。定義函數時需確定每一个输入值只对应唯一输出值，因此必须明确地选择一个平方根。例如定义formula_13，亦即对于任何非负输入值，选择其非负平方根作为函数值。
函數可以看作機器或黑箱，通常最常見的函數的參數和函數值都是數字，其對應關係用函數式表示，函數值可以通過直接將參數值代入函數式得到。formula_9，formula_1的平方即是函數值。也可以將函數很簡單的推廣到與多個參量相關的情況。例如formula_16有兩個參量formula_1和formula_18，以乘積formula_19為值。將這兩個輸入看作一個有序對formula_20。formula_21即為以這個有序對formula_20作參數的函數，而函數值是formula_19。函數能被抽象定義為某種數學關係，由於其定義的一般性，在幾乎所有的數學分支都是基礎概念。一些領域中比如在λ演算中，函数可以是作為一個原始概念而不像在集合論般有所定义。在大部分的数学领域内，术语对应、映射、变换通常是函数的近义词。不過某些情況這些術語可能有別的特定意思，例如在拓扑學中一个映射有时被定义成一个连续函数。
从输入值集合formula_24到可能的输出值集合formula_25的函数formula_6（记作formula_27）是formula_24与formula_25的关系，满足如下条件：
定义域中任一formula_1在到達域中唯一对应的formula_18记为formula_8。
比上面定义更简明的表述如下：从formula_24映射到formula_25的函数formula_6是formula_24与formula_25的直积formula_52的子集。formula_24中任一formula_1都与formula_25中的formula_18唯一对应，且有序对formula_20属于formula_6。
formula_24与formula_25的关系若满足条件（1），则为多值函数。函数都是多值函数，但多值函数不都是函数。formula_24与formula_25的关系若满足条件（2），则为偏函数。函数都是偏函数，但偏函数不都是函数。除非特别指明，本條目中的“函数”总是指同时满足以上两个条件的关系。 考虑如下例子： 除了利用函数的定义之外，还可以利用竖直判别法，即函数的图形与任何一条平行于 y 轴的直线不能有一个以上的交點。
函数这个数学名词是莱布尼兹在1694年开始使用的，用來描述跟曲线相关的一個量，如曲线的斜率或者曲线上的某一点。莱布尼兹所指的函数现在被称作可导函数，数学家之外的普通人一般接触到的函数即属此类。对于可导函数可以讨论它的极限和导数，此两者描述了函数输出值的变化同输入值变化的关系，是微积分学的基础。中文的“函数”一词由清朝数学家李善兰译出。其《代数学》书中解释：“凡此變數中函（包含）彼變數者，則此為彼之函數”。 分段函数（），在定义域内不同部分上，有不同的解析表达式，这样的函数通常叫分段函数。分段實際上是一種表達函數的方式，而不是函數本身的一個特徵，但是具有額外的限定，可以描述函數的本質。
函数formula_6在平面上的图形是点对formula_65的集合，其中formula_1取遍定义域上的所有成员。函数图形可以帮助理解证明一些定理。
注意函数图形可以有兩個定義：一是三元組formula_67，其中formula_24是函數的定義域，formula_25是函數的到達域，formula_70是關係的圖；二是索性以關係的圖定義。用第二個定義則函数formula_6等於其图形。元素formula_82在formula_6之下的像就是formula_8。
子集formula_85在formula_6之下的像，是以formula_87的元素的像所組成的集合，為formula_25的一個子集，即
注意formula_6的值域就是定義域formula_24的像formula_92。在#正式定义一節的最後例子中，formula_93在formula_6的像是formula_95，而formula_6的值域是formula_97。
根據此定義，formula_6可引申成為由formula_24的幂集（由formula_24的子集組成的集）到formula_25的幂集之函數，亦記作formula_6。
子集formula_103在formula_6的原像（或"逆像"）是如下定義的formula_24的子集： 沿用同一例子，我們可以看到formula_107的原像是formula_108，即空集。
根據此定義，formula_109是由formula_25的幂集到formula_24的幂集之函數。
以下是formula_6及formula_113的一些特性：
這些特性適合定義域的任意子集formula_120及formula_121和到達域的任意子集formula_122及formula_123，甚至可推廣到任意子集群的交集和并集。常用的数学函数包括多项式函數、根式函數、冪函數、对数函數、有理函数、三角函数、反三角函數等。它们都是初等函数。非初等函数（或特殊函数）包括伽马函數和贝塞尔函数等。
函數可分為
函數formula_131及formula_132的複合函數是
舉例，飛機在formula_134时刻的高度是formula_135，而高度formula_1处的氧气浓度是formula_137，則在formula_134时刻飛機周围的氧氣濃度是 formula_139
若formula_140則 formula_6可自我複合；此時複合函數可記作formula_142（不要與三角學的符號混淆）。函數的幂的定義是對自然數formula_124有
对一个函数，若值域中任何一个元素的原象是唯一的，那么这个函数就被称为是双射的。对任意的到它的原象的映射，我们称之为的反函数，记为。
举一个反函数的例子，比如，它的反函数是。同样，的反函数是。反函数是一个函数，它能够“抵消”它的原函数，并具有和原函数相同的单调性。参见逆映射。
給出formula_25的子集formula_24以及函數
則
稱為formula_6在formula_24的限制。
反之，若給出函數
當一個定義在formula_25的函數formula_154有formula_155，formula_6就是formula_21的擴張。
設函數及有為共同的定義域及環為共同的到達域。我們可以定義“函數和”及“函數積”如下： 对于所有中的。
這樣子我們得出一個函數組成的環。這是一個抽象性擴張的例子，由此我們從較簡單的結構得出更複雜的。
若然用別的代數結構代替，得出的由到的函數集會類似地擁有和相同的代數結構。
歧義函數，也称多值函数，指有輸出值多於一個的情況。例如，4的平方根可以是2或者-2，而兩者的平方皆是4。
嚴格來說，歧義函數不完全算是函數，因為數學函數的定義對於一個輸入值只能有唯一一個輸出值。實際上，這樣的「函數」通常被稱為關係式。复变函数理论采用黎曼面处理函数多值的困境。
设 D 是实数集 R 中的非空子集，称映射 f : D -> R 为定义在 D 上的一元函数。
多元函数（"n"-元函數）是指輸入值為"n"-元組的函數。或者說，若一函數的輸入值域為"n"個集合的笛卡尔积的子集，這函數就是"n"-元函數。例如，距離函數"dist"((x,y))是一個二元函數，輸入值是由兩個點組成的序對。另外，多複變函數（即輸入值為複數的多元組）是一個重要的數學課題。
在抽象代數中，運算元其實都是函數，如乘法"*"是個二元函數：當我們寫"x"*"y"時，其實是用上了*("x","y")的中綴表示法。
函數式程序设计是一個以函數概念為中心的重要理論範式，其中的运算对象为多元函数，基本语法基于λ演算，而函数的复合则采用代换来完成。特别地，通过一种称为柯里化的变换，可将多元函数变换为一元函数。
所有从整数到整数的可计算函数的个数是可数的，这是因为所有可能的算法个数是可数的。从整数到整数的函数个数要更多些－和实数个数一样多，也就是说是等势的。这说明有些从整数到整数的函数是不可计算的。关于不可计算函数，请参看停机问题和莱斯定理，OEIS中有一個經典的例子：。
在范畴论中，函数的槪念被推廣為態射的槪念。
一個范畴包括一組物件與一組態射，每一個態射是個三元组("X", "Y", "f")，"X"稱為源物件（定義域的類比），"Y"稱為目標物件（到達域的類比），而源物件与目標物件是范畴內的物件。基于这种解释，可以把函数看作集合范畴裡面的態射。